はてなブログのトップページに表示させる”記事の概要”が、スマホから閲覧したとき、表示されなくなってしまいました。

記事の冒頭の文章が表示されます。パソコンから閲覧すると、”記事の概要”に設定した文章が表示されます。スマホでもトップページに”記事の概要”の文章がでるようにしたいです。

調べましたが、どうしても類似例が見つけられませんでした。
CSSなどで変更できるか教えていただきたいです。よろしくお願いします。

ブログの状況です。
・最近proにして、パソコンとスマホのコードを別にしました。
・”記事の概要”が表示されているパソコンの方は、トップページにいくとアーカイブページにいくカスタマイズをしています。

ブログURL
http://www.quest-mile.com

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2017/06/02 08:44:51

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

はてなブログのトップページに表示させる”記事の概要”が、スマホから閲覧したとき、表示されなくなってしまいました。

自分で消してます :-)

デザインのスマホのタイトル下に書いている style だと思いますが、#header を丸ごと消してます。

/* ### はてなヘッダーの非表示 ### */
#globalheader-container {display:none;}
/* ### 余白調整 ### */
#container {padding-top:0px;}
/* ### デフォルトの丸いアイコン等の非表示 ### */
#header{ display:none;}		/* ★ これで消えてる */

スタイルだけで良い感じの場所に表示するのは難しそうなので、スクリプトを書いて記述をコピーする感じでしょうか。
例えば、こんなのとか。

/* ### ページ更新時に少しスライドさせる ### */
window.onload = function () {
  autoScroll();
  // ★ 以下を追加
  $("#title-bar .title").append("<div>" + $("#blog-description").text() + "</div>");
}
var $scrollX = 0;
var $speed=0;
  ...

ただ、これだけだと記述が収まるスペースが無いので、スタイルを調整する必要があります。
例えば、こんな感じとか。

#titlebar .title {
  line-height: inherit;
}
#titlebar .title div {
  font-size: 9px;
}



追記です。
CSS がよく分からないとのことなので、変更点をそのまま書きます。
デザインのスマホのタイトル下に書いている以下の部分。

<script type="text/javascript">
/* ### ページ更新時に少しスライドさせる ### */
window.onload = function () {
  autoScroll();
}
var $scrollX = 0;
var $speed=0;
function autoScroll() {
  var $sampleBox = document.getElementById( "menu-scroll" );
  $sampleBox.scrollLeft = ++$scrollX;
  $speed+=3;
  if( $scrollX < 25 ){
    setTimeout( "autoScroll()", $speed );
  }
}
</script>

その部分を、以下のようにしてください。

<script type="text/javascript">
/* ### ページ更新時に少しスライドさせる ### */
window.onload = function () {
  autoScroll();
  // ★以下の一行を追加
  $("#title-bar .title").append("<div>" + $("#blog-description").text() + "</div>");
}
var $scrollX = 0;
var $speed=0;
function autoScroll() {
  var $sampleBox = document.getElementById( "menu-scroll" );
  $sampleBox.scrollLeft = ++$scrollX;
  $speed+=3;
  if( $scrollX < 25 ){
    setTimeout( "autoScroll()", $speed );
  }
}
</script>
<!-- 以下の style タグで囲まれている 8行(style タグを含む)を追加 -->
<style>
#titlebar .title {
  line-height: inherit;
}
#titlebar .title div {
  font-size: 9px;
}
</style>

script タグの中に一行追加して、style タグを 8行追加してます。
他は変更する必要はありません。

いきなりメインブログをいじるのは嫌だ、というのはとても分かるので、テスト用のブログで試すのであれば、そこの URL を教えてください。
メインブログはプロフィールからたどれるのですが、メイン以外のブログを見つけるのは難しいのですよ。



さらに、追記です。
すみません、スクリプトを間違えてました m(_ _)m

window.onload = function () {
  autoScroll();
  // ★以下の一行を追加
  $("#title-bar .title").append("<div>" + $("#blog-description").text() + "</div>");
}

の「以下の一行を追加」のところなんですが、#title-bar#titlebar というようにハイフンを削除してください。

  $("#titlebar .title").append("<div>" + $("#blog-description").text() + "</div>");
  //      ↑こういうふうに



またまた、追記です。

記事一覧ページで一つ一つの記事のタイトル下にある”記事の説明”ともいうべき箇所の文章が、はてなブログの編集オプション”記事の概要”で設定した文章ではなく、記事冒頭の文章が表示されてしまう

こちらの対応をやってみました。

タイトル下にブログの説明を入れるカスタマイズに加えて、スクリプトを 15行ほど追加、スタイルシートを 3行追加です。

<script type="text/javascript">
/* ### ページ更新時に少しスライドさせる ### */
window.onload = function () {
  autoScroll();
  $("#title-bar .title").append("<div>" + $("#blog-description").text() + "</div>");
  // ★ 以下の 15行を追加
  Array.prototype.forEach.call(document.querySelectorAll("a.entry-list-anchor-block"), function(entry) {
    const max_length = 72;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', entry.href, true);
    xhr.onload = function(ev) {
      if (ev.target.status <= 200) {
        var dc = ev.target.response.querySelector('meta[property="og:description"]');
        var e = entry.querySelector(".entry-body > .entry-content > p");
        e.innerHTML = dc.content.length > max_length ? (dc.content.substring(0, max_length) + "...") : dc.content;
        e.style.display = "initial";
      }
    };
    xhr.responseType = 'document';
    xhr.send(null);
  });
  // ★ 追加は、ここまで。
}
var $scrollX = 0;
var $speed=0;
function autoScroll() {
  var $sampleBox = document.getElementById( "menu-scroll" );
  $sampleBox.scrollLeft = ++$scrollX;
  $speed+=3;
  if( $scrollX < 25 ){
    setTimeout( "autoScroll()", $speed );
  }
}
</script>
<!-- 以下の style タグで囲まれている 8行(style タグを含む)を追加 -->
<style>
#titlebar .title {
  line-height: inherit;
}
#titlebar .title div {
  font-size: 9px;
}
/* ★ 以下の 3行を追加 */
a.entry-list-anchor-block .entry-body > .entry-content > p {
  display: none;
}
</style>

コメントでも書きましたが、スマホ版の記事一覧では、HTML に「記事の概要」が入っていないので、記事一覧が表示された後に、個々の記事のページから記事一覧を取得して埋め込む、という戦略です。

最初の表示で、本来の機能の記事の先頭がちらっと見えてしまうので、最初はスタイルシートで見えなくしておいて、個別の記事から「記事の概要」を取得した後に見えるようにしています。

後、PC版では「記事の概要」を 116文字くらいで切り詰めているっぽいのですが、スマホの表示だと、それでも長いような感じがしますので、72 文字で切り詰めています。

    const max_length = 72;
他11件のコメントを見る
id:kotonoha_sorakuni

本当に、本当にありがとうございます!しっかりと”記事の概要”が表示されました。とてもうれしいです!

デザインの関係で、文字数は50字にしました。やっと納得のいくスマホデザインにすることができました。かさねがさねありがとうございます。a-kuma3さんに回答いただけてよかったです。ありがとうございました。

2017/06/02 08:44:03
id:a-kuma3

よかった、よかった。
Pro ユーザの PC版ページでは/archive に飛ばさなくても一覧形式を指定できるようになったそうなので、そのうち必要なくなるかもしれませんね。

2017/06/02 12:24:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません