キーワード検索とタグ検索を兼ねているMT検索結果テンプレート

2007年5月8日

MovableTypeの検索結果テンプレートは、「環境設定」-「テンプレート」-「システム」にある。
実はこのテンプレートの中味、なかなか面白い。
バージョン3.3から、このテンプレートが管理ページで編集できるようになった。
そしてタグフィールドを登録できるようになったので、通常のフォームでのキーワード検索に加えて、リンクされたタグの検索も兼ねている。

2つの検索結果表示が微妙に違うのは、このテンプレートでMTタグの条件分岐が使われているためである。
実は、デフォルトのCSSを利用していると、ちょっと困ったことが判明。
検索フォームになにもいれないで(空のまま)検索ボタンを押すと、1カラム表示になってしまう。
しかも2カラムの幅よりも小さく表示されてしまう。

ということで、この回避策は、
テンプレートのbodyタグのところを変更する。

==変更前==

<body class=”<MTNoSearch>layout-one-column<MTElse>layout-two-column-right</MTElse></MTNoSearch> mt-search-results”>

==変更後==

<body class=”layout-two-column-right mt-search-results”>

<MTNoSearch>~</MTNoSearch>は、検索結果ができなかった場合に出力するという意味。検索結果が見つからなかった場合とは違う。
検索できなかった場合、1カラムのCSSを使うように条件されているのでこれを解除。

本来、検索するために検索ボタンを押すので、なにも入れないで押すことは考えられない。ということで、検索ができなかったという条件に合致する。またなんらかのエラーで検索できなかった場合などもこれに該当する。

ちなみに、検索結果が0件の場合のMT条件タグは、<MTNoSearchResults>~</MTNoSearchResults>

ついでに検索結果ページに、ページ(カテゴリ)メニューが出るようにカスタマイズ。
ただしウェジット機能で、サイドメニューに設定する場合、何重にもIFタグが使われているので、挿入箇所には注意が必要。

このテンプレートは、プログラミングが好きな人には面白いけれど、そうでないと難易度は結構高いかもしれない。
しかし、タグ検索の可能性を考えると手を抜けない部分でもある。