Movable Type検索フォームカスタマイズ
Movable Type検索フォームカスタマイズ
Movable Type3.17での話です。
1つのブログに対して、そのブログ内の検索ができます。
そのソースが
<form method="get" action="<$MTCGIPath$><$MTSearchScript$>">
<input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
<label for="search" accesskey="4">このサイトの検索</label><br />
<input id="search" name="search" size="20" /><br />
<input type="submit" value="検索" />
</form>
なのですが、私のショッピングサイトのように複数のブログを1つのサイトとしている場合、このままですとサイト全体から検索できないのです。
そこでヘルプを見ると、どうやら
<input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
を外して
<form method="get" action="<$MTCGIPath$><$MTSearchScript$>">
<label for="search" accesskey="4">このサイトの検索</label><br />
<input id="search" name="search" size="20" /><br />
<input type="submit" value="検索" />
</form>
とすると、全ブログから検索することができます。
しかし困ったことに、こうすると今度は別にまったく違うブログを作った時、そのブログまで検索対象になってしまいます。
そこで
<input type="hidden" name="ExcludeBlogs" value="検索除外したいブログID" />
を付け加えることで、検索から除外したいブログを指定することができます。
「ブログID」とは、管理画面メインメニューでブログ名にマウスポインタを持っていくとステータスバーに出るアドレスの「・・・/mt.cgi?__mode=menu&blog_id=1」の一番後ろ「blog_id=1」がIDです。(この場合1がブログID)
ブログIDの3を検索から外したい場合
<form method="get" action="<$MTCGIPath$><$MTSearchScript$>">
<input type="hidden" name="ExcludeBlogs" value="3" />
<label for="search" accesskey="4">このサイトの検索</label><br />
<input id="search" name="search" size="20" /><br />
<input type="submit" value="検索" />
</form>
とすれば、ブログIDの3を除いたすべてのブログが検索対象となります。
次に検索結果のテンプレートなのですが、mt.cgiファイルと同じディレクトリにあるsearch_templatesフォルダー内にdefault.tmplファイルというのがあります。
初期設定のままですと、このテンプレート1枚ですべてのブログでの検索結果に使われてしまいます。
同じデザインならいいのですが、まったく違うブログを複数作った場合困ります。
そこでまたもやヘルプを見てみると、代替テンプレートというものが使えるそうです。
仮にtest.tmplという検索結果テンプレートを作ったとします。
test.tmplをsearch_templatesフォルダー内にアップロードします。
そしてmt.cfgファイルをテキストエディタで開き
AltTemplate test test.tmpl
を追記しアップロード。(私の場合、400行目あたりに同じような記述があったので、そこに追記しました)
そして、この検索結果テンプレートを使いたいブログの検索フォームソースに
<input type="hidden" name="Template" value="test" />
を追記しますと、検索結果がtest.tmplファイルでデザインした通りに表示されます。
今回のカスタマイズ、自分ではなかなか検索しないので気づかなかったのですが、ムーバブルタイプで複数ブログを作ると起こる事例だと思うので記事にしてみました。
人気ブログランキング
世界標準のブログソフトウェア「Movable Type」発売中
管理人認証後表示されます。
管理人認証後表示されます。