Home > MT3.3b1 - タグ検索結果のURLをシンプルに

MT3.3b1 - タグ検索結果のURLをシンプルに

これまでmt-xsearch + Tagwireでタグの動的検索を実現していたのですが、MT3.3b1では標準のmt-search.cgiがタグ検索をサポートしているようです。

クエリストリングスは以下でした。
http://yourhost/mt/mt-search.cgi?tag=foo&blog_id=1

このタグ検索結果URLを
http://myhost/tag/foo
に変えるには、blogのルート(この場合http://myhost/直下)に.htaccessを設置します。
内容は以下で多分。(blog_idは確認して正しいものに直す)

RewriteEngine on
RewriteRule ^tag/(.*)$ http://myhost/mt/mt-search.cgi?blog_id=1&tag=$1 [P,L]

テンプレート側は以下のように書き換えればいいんじゃないかと思います。

<a href="<$MTBlogURL$>tag/<$MTTagName encode_url="1">"><$MTTagName></a>

あとどうやらmt-searchのデフォルトは大文字小文字を区別しないようです。標準のTagging機能は大文字小文字を区別しているので、ちょっと注意が必要かもしれません。

※2006/07/01追記
Tagが「Movable Type」など半角スペースを含む場合に、上記やり方だとサーバエラーができます。
以前にこちらのエントリーで紹介した現象と全く同じで、解決方法も同じなんだろうけど、TagwireをOFFにしてしまっているので、encode_url_plusをなんとかしなければいけないです。

とりあえず、Ogawa::Memorandaさんが公開している、TagSupplementals Pluginの37行目あたりに

MT::Template::Context->add_global_filter('encode_urlplus' => \&encode_urlplus);

最後の1;の前くらいに

sub encode_urlplus {
 my $s = $_[0];
 return $s unless $_[1];
 require MT::Util;
 $s =~ tr/ /+/;
 MT::Util::encode_url($s);
}


を追加してアップすれば、encode_url_plusが使えます。

この場合テンプレート側は以下のように書き換えます。

<a href="<$MTBlogURL$>tag/<$MTTagName encode_urlplus="1">"><$MTTagName></a>

コメント

3.3を導入したら是非やりたいです!

投稿者: yoshidam | 2006年06月26日 02:02

このエントリーのトラックバックURL

http://www.trapple.net/blog/mt/mt-tb.cgi/39

トラックバック