Blogレイアウトの変更(パンパでガウチョ)

上の記事で書いたように、月別記事ページは元に戻したものの、カテゴリー別記事ページはタイトルだけを列記していましたが、これだとやっぱりわかりづらいような気がしました。

そこでカテゴリー別記事ページの各タイトルに要約を添えてみました。実際のところは、このブログの適当なカテゴリー別記事ページをご覧下さい。

FC2だと要約文を吐き出すテンプレート用の特殊タグが提供されているのですが、livedoorでは見つかりませんでした。

そこで、<$TrackBackAutoDiscovery$>が吐き出す文字列を利用することにしました。<$TrackBackAutoDiscovery$>には、各記事の要約文に相当する文字列が"dc:description"に記述されているからです。

もちろんこの文字列は、HTMLコメントとしてページに埋め込まれているのでこのままではブラウザに表示されません。JavaScriptで"document.body.innerHTML"を操作することによって、HTMLのコメント外に「放り出す」わけです。

カテゴリー別記事ページのHTMLテンプレートは以下のようにしています。

まずタイトルリストを生成するループ部分から…。

"<CategorizedArticlesLoop>"で囲まれたループ領域のすぐ外側にdlを配置し、全体を用語と説明形式のリストとし、タイトルと付加情報をdtでマークアップする一方、その直後に各記事についての<$TrackBackAutoDiscovery$>を配置しています。直後に置くのは後でJavaScriptで操作するのに楽だからで、これがポイントです。

ループ領域外側のdlには、class="archives_list"を付与し、後でスタイルを指定できるようにしています。こうするかどうか任意ですが、見栄えを調整しやすいので指定しておいたほうがいいでしょう。

次いで、"dc:description"に係る要約文本体をHTMLコメントの外に出すためのJavaScriptを、bodyの末尾に書き込みます。これはこのままコピペで大丈夫です。

原理は簡単で要約文の直前文字列"dc:description="を、HTMLコメントの終了を示す"-->"と、タイトルdtの定義文に相当する"<dd>"タグとで置換します。

同じく次の"dc:creator"を、"</dd><!--"で置換します。これで両置換箇所で挟まれた要約文がブラウザに表示されるようになるわけです。

問題は、私の書いた文字列置換用のJavaScriptコードの動作が遅いことです。正規表現とreplaceで一挙に置換できないものなのでしょうか > 達人の方

というわけで今ひとつ踏み切れないのですが、よろしかったらお試しください。