« ddwin.el: Meadow から DDwin を使う | トップページ | DDwin.js: Firefox から電子辞書 DDwin (または EBWin) を起動する »

2006年2月22日 (水)

Movable Type で「記事と同じカテゴリ内の最近の記事」を表示する。

プラグインを使わなくてもSSI とインデックステンプレートを組み合わせて使えば、「記事と同じカテゴリ内の最近の記事」を表示することができる。

当初、 Movable Type では Movable Type のタグの中で Movable Type のタグをネストして使うことはできないため、このようなことは不可能だと思っていた。

しかし、Apache 1.2 以降の SSI には if 文があり、その中で正規表現(というか部分文字列のサーチ = strstr)が使えることを知り、ココログプロで使える「新しいインデックステンプレート」と組み合わせれば、可能なはずだと思い致った。

問題は、このサイトではカテゴリ名に '/' を使っており、ラベルでカテゴリを指定すると正規表現の '/.../' とぶつかってしまうため、MTCategoryID を使いたいところだが、MTCategoryID は Category Archive 内などでそのまま使えない。今のところ Indivisual Archive に表示するだけなのであまり関係ないが、Archive 内などでサイドバーとして読み込もうとすると不具合が出るようにはしたくない。

しばしとまどったが《MovableType Tips: MovableType Tips Archives》にある方法でそれが解決できることがわかった。
基本的には、まず、表示したい(複数の)カテゴリの MTCategoryID を ',' で連結した文字列を作り、それを SSI の変数 CATEGORY_IDS に代入する。

次に、インデックステンプレートで、それぞれのカテゴリごとに if 文を付け、そのカテゴリの MTCategoryID (の前後に','を付けたもの)が、変数 CATEGORY_IDS 内に含まれていれば表示し、そうでなければ表示しないようにした。


Individual Archives テンプレートの変更


このサイトでは Individual Archives の最初に次のような変更を加えた。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!--#set var="CATEGORY_IDS"
 value=",<MTEntryCategories><$MTCategoryID$>,</MTEntryCategories>" -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>


また、次のように更新情報のあとに include 文を足した。

<p class="posted">...</p>
<div class="entry-recent-lists">
<!--#include virtual="/<$MTBlogDirname$>/recent-lists.shtml" -->
</div>
<MTEntryIfAllowPings>



新しいインデックステンプレートとして recent-lists.shtml を作る。


本当は拡張子を .shtml じゃなく .inc にしたかったのだが、ココログは .inc にするとコントロールパネルのファイルから見えなくなるという「仕様」なので、しかたなく .shtml にした。

Recent Lists というテンプレートを作成した。次のようなファイルである。

<a id="recent-lists"></a>
<MTCategories>
<!--#if expr="$CATEGORY_IDS = /,<$MTCategoryID$>,/" -->
<MTBlogIfArchives>
<h2>「<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>」カテゴリ内の最近の記事</h2>
<MTEntries lastn="5">
<div class="recent-lists-content">
<div class="recent-lists-title"><$MTEntryDate format="%Y-%m-%d"$> <a
href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></div>
<!--
<div class="recent-lists-body">
<$MTEntryExcerpt$>
</div>
-->
</div>
</MTEntries>
</MTBlogIfArchives>
<!--#endif -->
</MTCategories>
<!--#if expr="$CATEGORY_IDS = /,TOP,/" -->
<h2>「<a href="<$MTBlogURL$>"><$MTBlogName$></a>」内の最近の記事</h2>
<MTEntries lastn="5">
<div class="recent-lists-content">
<div class="recent-lists-title"><$MTEntryDate format="%Y-%m-%d"$> <a
href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></div>
<!--
<div class="recent-lists-body">
<$MTEntryExcerpt$>
</div>
-->
</div>
</MTEntries>
<!--#endif -->


はじめ Excerpt も表示されるよう書いてみたが、うっとうしかったのでコメントアウトしている。

また、CATEGORY_IDS に ',TOP,' を含めれば、そのブログ全体の最近の記事もリストされる。これを同じサイトの別のブログのサイドバーにでも入れようかと思ったのだが、これまた冗長になるのでやめた。……と思ったが《雑記》だけを他のブログのページに入れ、《雑記》には他のブログを入れることにした。

あとは CSS で適当に整えれば完成。

更新

2006-03-30
<$MTEntryExcerpt remove_html='1'$> を <$MTEntryExcerpt remove_html='1' encode_html='1'$> にした。
2006-03-28
トラックバックをいただいた《観測気球》の記事を参考に tooltip に <$MTEntryExcerpt remove_html='1'$> を表示するようにしました。現在は上の記事とは違う設定になっています。
2006-03-02
プラグイン MTTagInvoke を使えばできることを知った。
更新: 06/02/22,06/03/02
初公開: 2006年02月22日 03:00:10
最新版: 2006年03月30日 14:35:37

2006-02-22 17:46:31 (JST) in ウェブログ・ココログ関連 | | コメント (3) | トラックバック (3)

ウェブログ・ココログ関連」カテゴリ内の最近の記事

批評や挨拶のためのネットコミュニティ

  • はてなブックマーク(って何?) このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク
  • Twitter (って何?)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/93568/8779385

トラックバックのポリシー

他サイトなどからこの記事に自薦された関連記事(トラックバック)の一覧です。
» JRF のソフトウェア Tips:Movable Type で「記事と同じカテゴリ内の最近の記事」を表示する。 (この記事)

MTEntries では sort_by と last_n を同時に使うことができず、 MTArchiveList では offset を使うことができないようだ。 また、XML-RPC で更新情報として TIMESTAMP を書き込んだとき、月をまたぐと、(週別の)個別アーカイブの位置が変わるため、Permalink が変更されてしまうようだ。 ... 続きを読む

受信: 2006-02-24 01:29:24 (JST)

PHP も JavaScript も使わずに、Movable Type のテンプレートと SSI を駆使することで、個別記事にカテゴリ別最新記事一覧を差し込む方法があることを知り、採用してみました。 続きを読む

受信: 2006-03-28 01:42:21 (JST)

現在、ココログプロのシステムを使い「同人サイト」(というかほぼ個人のつぶやきサイトとなってる…)を整備している。そこは、仲間が見つけられるように公開ではありたいが、目立つのはあまり好ましくない。そこで、万一、目立ってしまったとき、アクセスを一時お断りするような機構が欲しいと考えた。 方法として思いついたのは、記事のカテゴリとして「休止中」や「ブックマーク拒否」というのを作り、そのカテゴリに属する場... 続きを読む

受信: 2010-05-06 19:26:26 (JST)

コメント

なお、現在のココログではデフォルトでこれと同等のことができるようになっています。この記事はココログ以外の方向けになったということですね。

投稿: JRF | 2007-07-15 18:14:14 (JST)

よぼらぼ
情色おんな秘図
襦袢の裾を乱れさせ、喘ぐ女の艶姿、悶えながらも男の精を吸い尽くす―江戸の世を舞台に繰り広げられる、淫らで妖しき五つの
http://www.8568985.com/mmgjkin/
http://www.8568985.com/garegky/

投稿: よぼらぼ | 2007-11-02 21:48:08 (JST)

According to my own exploration, thousands of persons all over the world get the credit loans at good banks. So, there is a good chance to get a bank loan in every country.

投稿: home loans | 2011-11-27 17:56:00 (JST)

コメントを書く



(メールアドレス形式)


※匿名投稿を許可しています。ゆるめのコメント管理のポリシーを持っています。この記事にまったく関係のないコメントはこのリンク先で受け付けています。
※暗号化パスワードを設定すれば、後に「削除」、すなわち JavaScript で非表示に設定できます。暗号解読者を気にしないならメールアドレスでもかまいません。この設定は平文のメールで管理者に届きます。
※コメントを書くために<b>ボールド</b>、<pre>詩文やソースコード</pre>、<a href="">リンク</a>、その他のHTMLタグが使えます。また、漢字[かんじ]でルビが、[google: キーワード] で検索指定が使えます。


ランダムことわざ: 身から出た錆。