昨日は、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;
}
これでも見た目は、まだよろしくない。誰かセンスのいい方、もう少しマシなスタイルを作って下さい ^^;
0 件のコメント:
コメントを投稿