エントリーでもサイドメニューを最新に保つ

  • 投稿日:
  • 投稿者:
  • カテゴリー:

blogのエントリー画面に「最新コメント」などを付けていても、古いエントリーでは全然最新じゃない、なんてことが起きます。

これは、エントリーの画面(正確に言うとPermalinkで示された、Individual archivesテンプレートで生成されたページ)は、「blog全体をrebuildする」、「individual archivesをrebuildする」、「そのエントリーに書き込みがあった場合」のどれかの最後の時点から、ページが更新されないからです。

Movable Typeでは、試みとして各ページを動的に生成することを考慮したこともあったようですが、重くて実用にならなかったようです。

しかしWWWサーバーでSSI(サーバーサイド・インクルード)を設定できれば、サイドバーなどを最新の状態に保てます(それでもサーバーに負荷はかかりますが)。

サーバーでの設定は次のとおり

・WWWサーバーでSSIを使える設定にする(これは各自)
・MTのmt.cfgで「HTMLPerms 0777」のコメントを外す

次に、最新の状態にしたい部分ごとに、新しいIndex Templateを作ります。
例えば最新のコメントを「recent-comments.cgi」というファイル名で、Index Templateとして作成します。

Recent-comments.cgi


#!/usr/bin/perl -w
print <

<div class="sidetitle">
Recent Comments
</div>

<div class="side">
<MTEntries recently_commented_on="5">
- [<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>]<br />
<MTComments lastn="2">
+ <$MTCommentAuthorLink show_email="0"$> at <a href="<$MTEntryLink$>#<$MTEntryID pad="1"$>"><$MTEntryDate format="%H:%M %b/%d"$></a><br />
</MTComments>
</MTEntries>

</div>

EOF

exit;

最後に表示させたい場所(例えばIndividual Entry Archive)に


<!--#exec cmd="<$MTBlogSitePath$>recent-comments.cgi" -->

などとします。


関 信浩のアップデートをFacebookページで受け取れます!!