2006-11-06

Blogger の目次に投稿日を表示する

昨日は、Blogger に目次を表示させる方法を書いた。今日は、その目次に投稿日も表示させるようにしてみやう。

投稿日の表示方法には、timestamp を使う方法と dateHeader を使う方法の二通りがある。前記事のおさらいをした後、二つの方法を順に説明しませう。

おさらい

目次を表示するためのコードは、次のやうなものだった。

<b:includable id='contents'>
  <div id='blog-contents'>
    <b:if cond='data:blog.pageType != "item"'>
      <h2>目次</h2>
      <ul>
        <b:loop values='data:posts' var='post'>
   <li><a expr:href='data:post.url'><data:post.title/></a></li>
        </b:loop>
      </ul>
    </b:if>

    <!-- navigation -->
    <b:include name='nextprev'/>
  </div>
</b:includable>

まず、これをテンプレートの main セクションに追加。そして、目次を表示させる場所に

<b:include name='contents'/>

を挿入するんだったね。詳しくは前記事をどうぞ。

今回は、contents includable の変更点に話題を絞る。

timestamp を使う方法

timestamp は、記事のフッターに表示される投稿日情報のこと。timestamp を追加するには、

        <b:loop values='data:posts' var='post'>
   <li><a expr:href='data:post.url'><data:post.title/></a></li>
        </b:loop>

を、次のように修正する。

        <b:loop values='data:posts' var='post'>
   <li><data:post.timestamp/> <a expr:href='data:post.url'><data:post.title/></a></li>
        </b:loop>

ただし、本ブログのやうに、timestamp の書式を「投稿日の時刻のみ表示」にしていると、間抜けな目次が出来上がってしまう。その場合は、設定から timestamp の書式を適切なものに切り替えるか、次の dateHeader を使う。

なお、timestamp の書式の設定は、Settings > Formatting > Timestamp Format から行なえる。

dateHeader を使う方法

dateHeader は、記事タイトル前に表示されている投稿日情報のこと。dateHeader の表示には、<data:post.dateHeader/> を使う。

ただし、dateHeader は一日の記事に一つしか付かない。つまり、一日に 3 つの記事を投稿したら、最新の記事にのみ dateHeader 情報が付加され、残り 2 つの記事には dateHeader が用意されない。そのため、dateHeader の有無で、スタイル・シートを追加し、見た目を整える必要がある。

clmemo@aka では、

        <b:loop values='data:posts' var='post'>
   <li><a expr:href='data:post.url'><data:post.title/></a></li>
        </b:loop>

を次のやうに修正し、

        <b:loop values='data:posts' var='post'>
          <b:if cond='data:post.dateHeader'>
            <li class='with-date-header'><data:post.dateHeader/> <a expr:href='data:post.url'><data:post.title/></a></li>
   <b:else/>
            <li><a expr:href='data:post.url'><data:post.title/></a></li>
   </b:if>
        </b:loop>

下記のスタイル・シートを適用している。

#blog-contents li {
  padding-left: 2em;
  text-indent: -1em;
}
#blog-contents li.with-date-header {
  text-indent: -2em;
}

これでも見た目は、まだよろしくない。誰かセンスのいい方、もう少しマシなスタイルを作って下さい ^^;

ref

No comments:

Post a Comment