MTをPHP化したときに困るのが mt-search.cgi とか mt-comments.cgi とかの動的に表示するページ達。せっかく header.php とかに分割したのに cgi じゃ使えないわけで。。。 なぜか タグ も mt-search.cgi で表示だし、これは不便。
というわけで多少無理やりだが mt-search.cgi は php で使えるようにした。といってもやってることは単純で、PHPのページから mt-search.cgi を叩いて検索結果を include してるだけ。
まずは IndexTemplate に mtos4/mt-search.php という名で Custom Template を作成。内容は以下のコード。URLとかは各自適当に。
<?php
include '<$MTBlogSitePath$>header.php';
if (!isset($_GET['tag']) || !isset($_GET['blog_id'])) {
echo 'invalid argument...';
exit(0);
}
$tag = $_GET['tag'];
$blog_id = $_GET['blog_id'];
// argument check $tagのチェックがローマ字のみなのは俺がタグの名前に英語しか使わないから。
// タグに日本語を使ってる人はそれように変えないといけないかもね
if (!preg_match('/^[0-9]$/', $blog_id) || !preg_match('/^[a-z0-9]*$/i',$tag)) {
echo 'invalid argument....';
exit(0);
}
include sprintf('http://loumo.jp/mtos4/mt-search.cgi?tag=%s&blog_id=%s'
, $tag
, $blog_id
);
include '<$MTBlogSitePath$>footer.php';
?>
次に、System Templates の Search Results 内で <$MTInclude module="Header"$> とかしてる箇所を削除する。
その後、mt-search.cgi と表記してある場所を mt-search.php に変更する。標準では<$MTBlogSearch$> なんていうMTのタグが入ってるが気にせず変更、引数も忘れずに付ける。俺の場合はタグクラウドの部分の一箇所だけで終わり。以下のようなURLになる。複数BLOG作ってる場合は、blog_id を習得するMTタグを入れないといけないが、そんなことしてないので1固定。
http://loumo.jp/mtos4/mt-search.php?tag=<$MTTagName$>&blog_id=1
これで mt-search.cgi は置き換え完了。mt-comments.cgi は・・・またそのうち試して見る。
-- 追記(08/06/25)
ちょっとソース修正。HTML構築する部分が減ったからか、だいぶスピードが速くなった。情報量的にサイドバーが一番時間かかってたのかなあ。