- 2009年6月 1日 08:36
- Last update: May 24, 2016 07:46
- MTカスタムフィールド

Movable Typeのカスタムフィールドに書いてある内容から、任意の「キーワード」で記事を絞り込んでリストアップするというテンプレートを書いてみました。
コチラが説明しづらい部分がありますので、先ずは人力検索はてなの質問をご覧ください。
- Movable Type4.23でwebサイトを構築中です。 特定のカスタムフィールド中に、同一の単語を含む記事を一覧表示させたいのですが、 カテゴリを使わずにできる方法はありますでしょうか。人力検索はてな (#1233251618)
要点をまとめると、このようなかんじでしょうか。
- 大阪一円のレストランに関する記事が作成されている
- 各記事には、「最寄り駅」という名のカスタムフィールドがある
- カスタムフィールドには最寄り駅から何分という情報が記載されている
- カスタムフィールドに書いてある最寄り駅の駅名から記事をリストアップしたい
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:
- カスタムフィールドは記事用で作成し、テキストタイプ、カスタムフィールドを出力するタグ名は「mt:cf_MoyoriEki」とした
- cf_MoyoriEkiを変数(station)に収め、任意のキーワードを含んでいる記事をリストアップさせた
参考までに、一連の動作の検証で使用したファイル群は以下。
- Download:
Comments:
コメントをどうぞ。書き込む場所が不明な場合やサイトオーナーへのコンタクトは、GuestBookまでお気軽にどうぞ
blog comments powered by Disqus