Movable Type 5.1の検索で検索結果テンプレートを指定する方法

Movable Type 5.1の検索で検索結果テンプレートを指定する方法

Posted at November 27,2011 12:33 AM
Tag:[MovableType, Search]

Movable Type 5.1の検索で検索結果テンプレートを指定する方法を紹介します。ここで紹介する方法は5.12で動作確認しています。

1.基本動作

検索結果テンプレートの基本的な動作は次のようになります(公式ドキュメントより抜粋)。

Movable Type 5 ドキュメント - 検索ページのカスタマイズ

IncludeBlogsで最初に指定したブログのテンプレートを利用します。

IncludeBlogsは検索対象を指定するパラメータで、フォームに次の赤色のように記述します。

<form method="get" action="<$mt:CGIPath$><$MTSearchScript$>">
    <input type="text" id="search" name="search" value="<$mt:SearchString$>" />
    <input type="hidden" name="IncludeBlogs" value="1,2,3,4,5" />
    <input type="submit" value="GO" />
</form>

ブログIDを1つしか指定しなければそのブログIDの検索結果テンプレートを利用します。上記の設定ではブログID「1」の検索結果テンプレートを利用します。

2.特定のブログの検索結果テンプレートを指定する

検索フォームに赤色のinput要素を追加します。value属性には、検索結果テンプレートを使用したいブログのブログIDを指定します。

<form method="get" action="<$mt:CGIPath$><$MTSearchScript$>">
    <input type="text" id="search" name="search" value="<$mt:SearchString$>" />
    <input type="hidden" name="IncludeBlogs" value="1,2,3,4,5" />
    <input type="hidden" name="blog_id" value="2" />
    <input type="submit" value="GO" />
</form>

この場合はブログID「2」の検索結果テンプレートを利用します。

3.代替テンプレートを使って検索結果を表示する

「代替テンプレート」とは、どのブログにも属さないテンプレートを指します。検索フォームにname属性「Template」のinput要素を追加することで、検索結果用の代替テンプレートを指定します。

代替テンプレートを使った検索結果のサンプル
代替テンプレートによる検索結果

検索結果用の代替テンプレートは、MTのインストールディレクトリにあるsearch_templatesディレクトリに配置します。そのディレクトリにはdefault.tmplがサンプルとして置かれているので、それをリネームして利用すると良いでしょう。なお正式な代替テンプレートファイル名として「default.tmpl」は利用できないので注意してください。

代替テンプレートを使って検索結果を表示するには、mt-config.cgiに次の内容を追加します。ここでは代替テンプレートのファイル名を「altsearch.tmpl」とします。

SearchAltTemplate altsearch altsearch.tmpl

検索フォームに次のinput要素を追加します。value属性には、SearchAltTemplateで設定した2つめの文字列(=利用したい代替テンプレートの拡張子を除いた名称)を設定してください。

<input type="hidden" name="Template" value="altsearch" />

代替テンプレートを利用するときに、すべてのブログを検索対象にしたい場合は、name属性がblog_idおよびIncludeBlogsのinput要素を指定しないでください。ただしこの設定を行った場合には不具合が発生するため、対処方法は別途エントリーします。

blog_idのinput要素を指定した場合、代替テンプレートで利用するテンプレートタグについて、指定したブログIDの情報が適用されることがあります。例えばMTLinkタグがそうです。

IncludeBlogsのinput要素でブログIDを指定すれば、指定したブログを検索対象にして代替テンプレートで検索結果を表示することができますが、先頭に設定したブログIDの情報が適用されることがあります。適用されることで何か不都合が生じる場合はblog_idと併用することを推奨します。

4.参考情報

関連記事
zenback
人気エントリー
トラックバックURL


コメント

MT4.25でサイトを運営しております。HP、書籍等いつも参考にさせて頂いております。

どうしてもわからなかったのでコメントさせていただいたのですが、お手すきの時にでもお答えいただけたら幸いです。

検索結果が多く、分割されたページでも代替テンプレートを適応させる方法はありませんか?

宜しくお願いいたします。

[1] Posted by 408mamo logo : March 28, 2013 6:04 PM

たびたび失礼いたします。質問の補足です。

代替テンプレートはスマホサイト用にしようしており、PC用サイトは既存のテンプレートで表示させております。

ですので、スマホサイトで検索結果を閲覧しているときに、分割した【次のページ>>】などに移動するとPC用のテンプレートが適応されてしまうという事象が起きるのです。

タグによる絞り込み検索などのときにも同様の問題に直面いたします。

何かいい解決策がありましたらお教えください。よろしくお願いいたします。

[2] Posted by 408mamo logo : March 29, 2013 10:04 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)