May
タグ検索結果をPHP化してURLを変更する/Movable Type4
[ .htaccess : movabletype : php ]
MovableTypeのエントリーに付けられたタグをタグクラウドのようにしたり、ブログのカテゴリーのように利用しているのですが、タグ検索結果とキーワード検索結果のテンプレートは、PHPスクリプトを記述していても動作してくれません。タグをカテゴリー代わりに使っているので、なんとかサイト内の共通のPHPスクリプトをこのテンプレートでも使いたかったので、トライしてみました。その一連の作業のまとめ。
まず、システムテンプレートで出力されているファイルをPHP化する必要があります。探していたところ、Movabletypeに関する著作とかがある藤本氏がプラグインを作成していました。それを使わせてもらいました。
まずは、プラグインの導入
ここからダウンロードしてみる。仕組みとしては、PHPからCGIへリクエストして出力したファイルをくるむみたいな方法らしいです。詳しくは
http://www.h-fj.com/blog/archives/2005/09/16-161205.php
ダウンロードしたスクリプトをmovabletypeのインストールしたディレクトリーにアップロード。
同じディレクトリーにキャッシュファイルを格納する為のディレクトリー"cgitmp"を作成して、パーミッションを707に変更する。
検索フォームに追記する
今回は検索フォームは使わないのですが、出力されるURLを確認したいので、このページあるように検索フォームの記述を変更します。 mobvabletype4.1の場合は、ウィジェットになっているので、テンプレート > ウィジェットのテンプレート > 検索 をひらく
修正前 : action="<$MTCGIPath$><$MTSearchScript$>"
修正後 : action="<$MTCGIPath$>mt-phpincgi.php"
そのすぐ下に、これを追加する
<input type="hidden" name="requrl" value="<$MTCGIPath$><$MTSearchScript$>" />
そうすると、実際にページから検索がおこなえます。ほかにも方法あるかもしれませんけど、とりあえず確認してみよう。プラグインが動作しますので、検索からキーワード検索、タグ検索をしてると、プラグインが動作してURLが変わっているのがわかります。
検索結果
http://hogehoge.jp/mt/mt-phpincgi.php?search=webデザイン&requrl=http%3A%2F%2Fhogehoge.com%2Fmt%2Fmt-search.cgi&IncludeBlogs=1
タグ検索結果
http://hogehoge.jp/mt/mt-phpincgi.php?tag=webデザイン&requrl=http%3A%2F%2Fhogehoge.com%2Fmt%2Fmt-search.cgi&IncludeBlogs=1
といった感じで表示されます。この段階でPHPスクリプトも実行されていれば、問題ないでしょう。今回の作業の目的は、タグの検索結果ページのPHP化なので、これでページの出力はオッケイなので、続いてリンク元の変更を行います。
リンクの変更
これでPHP化してスクリプトも実行できるようになりましたが、いままでのURLと変更になってしまったので、タグ検索結果ページへのリンクを変更する必要があります。movabletypeのタグを変更して、リンク先を変更しなければならないのですが、タグ検索結果は<$TagSearchLink$>で定義されています。
この<$TagSearchLink$>の出力を変更しようかとおもったのですが、ひとまず下記の用に変更しました。
*************************************************************************
【通常タグサーチ結果のURL<$TagSearchLink$>】
http://hogehoge.jp/mt/mt-search.cgi?tag=webデザイン&IncludeBlogs=1【PHPが動くプラグインを利用した場合】
http://hogehoge.jp/mt/mt-phpincgi.php?tag=webデザイン&requrl=http%3A%2F%2Fhogehoge.com%2Fmt%2Fmt-search.cgi&IncludeBlogs=1【それで、こうしました】
<$TagSearchLink$>
のところを
<$mt:CGIPath$>mt-phpincgi.php?tag=<$mt:TagName$>&requrl=http%3A%2F%2Fhogehoge.com%2Fmt%2Fmt-search.cgi&IncludeBlogs=1*************************************************************************
ただこれだと、URLが長くなりすぎだし、メンテナンス性などもよろしくないので、記述を短くして、URLも短くします。.htaccessからりダイレクトを書ける事によって、見た目静的ページにする事ができるようなのですし、SEO的にもいいと言われているので対応しておきました。
というと、このようなアドレスにアクセスがあった場合、
http://hogehoge.jp/tag/webデザイン
下のURLが表示されるようにしてます。
http://hogehoge.jp/mt/mt-phpincgi.php?tag=webデザイン&requrl=http%3A%2F%2Fhogehoge.jp%2Fmt%2Fmt-search.cgi&IncludeBlogs=1
.htaccessでリダイレクトの設定を行う
.htaccessの記述を追加することで、上記のURLからリダイレクトをかけれます。RewriteEngine on RewriteRule ^search/(.*)$ /mt/mt-search.cgi?IncludeBlogs=1&search=$1 RewriteRule ^tag/(.*)$ /mt/mt-phpincgi.php?tag=$1&requrl=http://hogehoge.jp/mt/mt-search.cgi&IncludeBlogs=1
これで、SEO的にも効果があって、URL的にもきれいに
で、最後にテンプレートの変更です
<$TagSearchLink$>と記述してあるところを全て変更しておきます。
修正前 : <$mt:TagName$>
修正後 : <$mt:TagName$>
参考URL
http://www.h-fj.com/blog/archives/2005/09/16-161205.php
http://memorva.jp/memo/linux/mod_rewrite.php
http://weblog.2-d.jp/movable_type/customize/000061.php
http://2xup.org/log/2006/07/07-1405




コメントする