キーワード検索とタグ検索と

Movable Typeのシステムテンプレートの検索結果は1つのテンプレートで、キーワード検索とタグ検索を兼ねています。テンプレートで使われているテンプレートタグ(MTIfStraightSearch・MTIfTagSearch)を確認してみました。

MTの検索結果ページのテンプレートをながめていたんですが、「MTIfStraightSearch」、「MTIfTagSearch」といった普段使わないようなテンプレートタグがあることに気づきました。

このタグはどうやら、タグ検索のときにおこなう動作と、キーワード検索のときおこなう動作を振り分けしたりするときにつかう条件タグのようです。

MTでは検索結果のページはシステムテンプレートとして1つあるだけですから、このテンプレートでキーワードとタグの検索結果を兼ねているということなんですね。

ページタイトルをキーワード検索・タグ検索とでかえてみる

MT(バージョン4.1)のデフォルトテンプレート(serch_results.mtml)によりますと、ページタイトルの部分は以下のようにして作られているようです。

<MTSetVarBlock name="page_title">Search Results</MTSetVarBlock>
<MTSetVarBlock name="title"><$MTBlogName encode_html="1"$>: <$MTGetVar name="page_title"$></MTSetVarBlock>

title要素として取得するのはヘッダーのテンプレートモジュールで以下のような具合です

<title><$mt:var name="title"$></title>

これを、MTIfStraightSearchを用いて振り分けするとこのような感じでしょうか

タグ検索のときだった場合に、Search Results for Tagというタイトルになるようにした例です

<MTIfTagSearch>
<MTSetVarBlock name="page_title">Search Results for Tag</MTSetVarBlock>
<MTElse><MTSetVarBlock name="page_title">Search Results</MTSetVarBlock>
</MTIfTagSearch>

*実際は、一行で書いてます

タグ検索のときキーワード検索と別な内容を処理する

テンプレートタグリファレンスを見てわかったことですが、MTIfTagSearchで囲まれた中で何か処理できるようです。

デフォルトテンプレートを見ますと、h1要素で、このように使われています。

<h1 id="page-title" class="search-results-header">
        <MTIfStraightSearch>
    Results matching &ldquo;<$MTSearchString$>&rdquo; from <$MTBlogName encode_html="1"$>
        </MTIfStraightSearch>
        <MTIfTagSearch>
    Results tagged &ldquo;<$MTSearchString$>&rdquo; from <$MTBlogName encode_html="1"$>
        </MTIfTagSearch>
</h1>

あまり、複雑な処理をいれると、表示時間に影響がでそうなんですけど、これを応用すると、タグ検索に特化したページなど作れそうな感じです。

ウチのところでは、試験的にサーチワードを利用して、自分のdel.icio.usでそのタグを探せるように改造してみました。

*サイドバーにある、タグのリストから結果を確認できます。