MovableTypeのカスタムフィールドで特定キーワードを含む記事をリストアップするテンプレート

Movable Typeのカスタムフィールドに書いてある内容から、任意の「キーワード」で記事を絞り込んでリストアップするというテンプレートを書いてみました。

コチラが説明しづらい部分がありますので、先ずは人力検索はてなの質問をご覧ください。

要点をまとめると、このようなかんじでしょうか。

  1. 大阪一円のレストランに関する記事が作成されている
  2. 各記事には、「最寄り駅」という名のカスタムフィールドがある
  3. カスタムフィールドには最寄り駅から何分という情報が記載されている
  4. カスタムフィールドに書いてある最寄り駅の駅名から記事をリストアップしたい

MovableType.jpの「カスタムフィールドの値で並べ替えやフィルタリングする」に書かれている、「カスタムフィールドの値を利用したフィルタリング」を試してみたのですが、どうもfield:customfieldbasename=fooの中身が完全一致でないと期待の動作にならないようなのです。

そうなると、大阪一円の駅名の部分だけのフィールドを「ドロップダウンメニュー」や「ラジオボタン」タイプで別途設けておいてそのフィールドのほうで、評価してみるというような使い方でないと、カスタムフィールドの値でソートというのが実現されないように思います。それならば、一旦変数にフィールドの内容を格納してそこから評価してみるというのでどうでしょうか。

ということで、回答は閉め切られてますが、コチラがこの命題に答えた解答は以下のような感じです。あまりすっきりしない感じですが。

カスタムフィールドから特定キーワードを含む記事をリストアップするテンプレート

<mt:setvars>filterName=JR大阪駅</mt:setvars>
<mt:setvartemplate name="showMoyorieki">
<MTEntries><mt:setvarblock name="station"><mt:cf_MoyoriEki></mt:setvarblock><mt:if name="station" like="$filterName"><li><a href="<$MTEntryPermalink$>"><MTEntryTitle></a>:<mt:cf_Moyorieki></li>
</mt:if></MTEntries>
</mt:setvartemplate>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<$mt:PublishCharset$>" />
<title>test custom field filtering</title>
</head>
<body>
<div>
<h1>最寄り駅: <em><mt:var name="filterName" /></em>を含む記事</h1>
<ul>
<mt:getvar name="showMoyorieki" trim="1" />
</ul>
</div>
</body>
</html>

Note:

参考までに、一連の動作の検証で使用したファイル群は以下。

Download: