hidden


 Search Results を見直してみた

検索結果画面や mt-search.cgi には殆ど触れていなかったので、調整してみました。

まず、Pandora Template を適用しているこのブログですが、TagCloud が IE では動作しませんでした。
具体的に書くと日本語 (2バイト文字) のタグで文字コードのエラーが発生します。

そこで、暫定的に User Agent から IE のみ エラーページ に飛ばしていました。

何日かして TagCloud のページのソースコードをみたら発見。
ウィジェットなどはパラメータが URL エンコードされているのに、されていない。

<mt:entrytitle encode_url="1" />

" URL での利用に合わせたフォーマットに、Movable Type タグの値をエンコードします。
アルファベット以外の文字を 16 進数ベースのものに変換します。
たとえば "、" は "foo%20bar" に変換されます。 "

encode_url (グローバル・モディファイアリファレンス)

params:'tag=<$MTTagName encode_url="1" encode_js="1"$>

テンプレートモジュールの 『タグクラウドの詳細』 を上のように変更すれば IE でも動きます。

この修整を18日に行いました。

検索画面をサイトパスに収める

ここからは今日行った作業です。

複数ブログを運用する際のタグサーチ (j-sp.net)

mt-search.cgi の結果を PHP に出力する方法です。
こちらを使えばブログの公開パス内に検索結果を出力できます。

<$MTTagSearchLink$> の置き換えが、ウィジェットの TagCloud と検索ボックスを始め、
検索結果画面の検索ボックスや Archives などタグの一覧が出るページで必要になるため結構手間でした。

ブログ別に検索件数を変える

mt-search.cgi では初期設定で1ページに20件の結果が出力されます。

SearchMaxResults xxx

値を変更したい場合は mt-config.cgi に上のように追記します。 ( "xxx" に数字を入れる)

しかし、これでは複数ブログを管理しているとき値が同じになってしまいます。

hogehoge.com/mt-search.cgi?search=A&IncludeBlogs=x&limit=5

URL クエリストリングの &limit=x の部分で表示件数が変わります。

なので、この値をブログ毎に手動で変更します。

<input type="hidden" name="limit" value="<$mt:SearchMaxResults$>" />

検索ボックスで上のようなコードがある場合は <$mt:SearchMaxResults$> に数字を入れます。
<$mt:SearchMaxResults$> には mt-config.cgi で設定した値が入ります。

mt.Vicuna Template にはありませんが、追記してください。

a href="<$MTTagSearchLink$>"

TagCloud では上の <$MTTagSearchLink$> を書き換えますが、数字のみではありません。

http://hogehoge.com/mt-search.cgi?blog_id=x&tag=<$MTTagName encode_url="1"$>&limit=5"

検索画面のクエリストリング含め URL をフルに書きます。

"blog_id=" は検索するブログ ID です。
あまり URL に出て欲しくないので、Pandora Template はその点良いですね。

Crawler 避けをする

ここからはオマケ的な内容です。

散々話してきた mt-search.cgi ですが、動作が重いと言われています。
ですから、クローラが頻繁に踏むと具合が悪いということで robots.txt を使います。

User-agent: *
Disallow: /mt/mt-search.cgi

このように記述して robots.txt をドメインのルートに置きます。

<Files mt-search.cgi>
<Limit GET>
order allow,deny
allow from all
deny from xxxxxxxxx
</Limit>
</Files>

mt-search.cgi と同じ階層に .htaccess を設置して制限しても良いですね。

上で挙げた方法で PHP に出力している場合でも、mt-search.cgi へのアクセスを制限してしまうと 403 Forbidden になるので注意です。
関連して PHP に出力はしていますが、MTPaginate (ページを分割するプラグイン) などは使えません。

mt-search.cgi のファイル名の変更

意味があるのか分かりませんが、PHP に出力していてブログ ID から他のブログを見つけられたくない場合には有効かも知れません。
Movable Type を狙った Bot があればその対策にも……。

SearchScript xxxxxx.cgi

SearchScript (環境変数リファレンス)

ファイル名を変更して、mt-config.cgi に上のように追記します。
セキュリティという意味では mt.cgi を変更した方が良いですね。


検索関係についてはこんなところでしょうか。
時間をみつけて今度はページ送りを付けようと思います。

 Trackback Pings(0)

No trackbacks found.

 Comments(0)

No comments found.

 Post a Comment