top

検索結果のカスタマイズ(3.2以前用)

MTにはブログ内検索機能がありますが、この検索結果のテンプレートだけは何故か管理画面にはなく、「search_templates」フォルダの中に入ってます。そのため他のテンプレートのように管理画面から編集することができません。検索結果のデザインを変えたくなったら、直接「search_templates」フォルダ内の「default.tmpl」を編集しなくてはいけません。しかも、そのテンプレートは全ブログ共通で使いまわされます。

ブログが1つしかないなら別にいじくる必要もないテンプレートですが、複数のブログがあり、かつバージョンの違うテンプレートが混在しているときはややこしいことになります。つまり、ブログAは3.17時代のテンプレート、ブログBは3.2用テンプレートで運用していた場合、どちらかのブログでcssが合わないための表示崩れが起きてしまいます。カスタマイズ度が激しいと、同じバージョンでも崩れてきたりします。

検索結果なんて今までは気にもしていなかったけれど、さすがに一目で「こりゃcss効いてないわい~」な表示を見てるとさすがに情けなく…。で、マニュアルを調べてみたら、一応、ブログごとに検索結果の表示をコントロールする方法が書いてありますね。代替テンプレートという項目です。

しかしその方法だとmt-config.cgiにゴチャゴチャとなにやら追加しなければいけないようす。テンプレートを新しく複数作るのも面倒くさいな~と気持ち萎え気味。検索結果にそこまで凝る気はないし、表示崩れだけ直ればいいんで…。

そこで閃きました。

default.tmplが呼び出しているcssがそれぞれのブログのcssになってるからいけないんだ! だったら、ブログに関係なく、常に同じcssを読み込むようにすればいいんじゃん!

で、まず基本のdefault.tmplをどのバージョンのにするか決めます。それに合わせて適当なcssファイルを作ります。そのcssファイルを「search_templates」ディレクトリ内にアップします。そしてdefault.tmpl内の以下の記述の赤色の部分を

<link rel="stylesheet" href="<$MTBlogURL$>styles-site.css" type="text/css" />

cssファイル名をsearch.cssという名前にしていたなら、以下のように変えます。

<link rel="stylesheet" href="http://mtを置いているアドレス/search_templates/search.css" type="text/css" />

これで使っているブログに関係なく、常に同じcssが読み込まれるので、デザインやバージョンの違うブログを使っていても検索結果は常に同じデザインになります。ブログごとにデザインを変えるのもいいけど、検索結果は全ブログ共通~なのも面倒がなくてよいです。どのブログにも合うようなシンプルで癖のないデザインにしておけば別に問題ないし。

ということで、超自己流一件落着~。

<2006.8.3追記>
MT3.3からは管理画面の「テンプレート>システム」からブログ毎に検索画面のカスタマイズが行えるようになりました。なのでこのカスタマイズは3.2以前のバージョン用です。