MT3.3のエントリー・タグ機能実装

エントリー・タグ機能を実装してみた

MT3.3にアップグレードしてから二週間あまり。MT3.3の新機能として追加された"タグ"という概念。せっかく苦労してアップグレードしたので、とりあえず実装してみました。まぁ前からやりたかった事もあったので、それもついでに。

タグとは

タグとは、エントリーにつけるジャンル分けのための語句(ラベル)です。Movable Type では記事をカテゴリごとに分けることができますが、さらにタグを使うことで、エントリーごとに細かくジャンル分けしたり、ウェブログ全体の記事から関連のあるエントリーを簡単に見つけることができるようになります。(※すべてのページで使用可)

エントリー・タグを活用すると以下のような表示が可能です。

  • ・特定のブログ内のエントリー・タグの一覧表示
  • ・タグ・クラウドを使ったエントリー・タグの一覧表示
  • ・エントリーで入力されたエントリー・タグの一覧表示
  • ・特定のエントリー・タグが入力されたことの確認
  • ・特定のエントリー・タグが入力されたエントリーの一覧表示

その他詳しい詳細については、Movable Type 3.3 エントリー・タグ詳説がとても参考になるので、そちらをご覧になられた方がよいと思います。

タグって閲覧者にはどう見えるの?

「タグ」って言われても、いまいちピンとこないでしょうけど、基本的にはサイト内検索をしているのと同じ感覚。運用者側が任意で各エントリーに付与したタグに基づく、エントリーが表示されるような仕組みで、どちらかと言えばカテゴリと似た感じでしょうか。

事実、タグ名称を表示させてタグ用のリンクを追加すると、「mt-search.cgi」の生成するページが表示されます。

という事で勘の良い方はもうお気づきでしょうが、パラメータを含んだ動的なURLを吐いて、エントリーの一覧ページが表示されるという仕組みです。実装面でもちょっと調べれば、ここまでは特に難しくないです。

Apacheモジュール mod_rewrite

どうせ「mt-search.cgi」で動的ながらURLが新規に生成出来るのなら、せっかくだしSEO対策をやってみるかと考えて、「mod_rewrite」も実装してみました。

「mod_rewrite」とは、ルールベースの 書き換えエンジンを使い、要求された URL を適宜書き換えます。 サポートするルールの数、および各ルールを適用する際のルール条件 の数に制限はなく、本当にフレキシブルでかつパワフルな URL 操作 メカニズムを提供します。この URL 操作に先立ち、次のようにいろいろな 評価を行なうことができます。たとえばサーバ変数、環境変数、HTTP ヘッダ、 タイムスタンプ、さらに外部データベースの検索結果までを評価の対象として、 各種のフォーマットを使った粒度の高い URL マッチングを実現できます。

この「mod_rewrite」を使って、パラメータを含んだURLを静的なURLに置換し、検索エンジンに認識させてやろうという目論みです。

という訳で、結構苦労しましたがタグ機能と「mod_rewrite」を組み合わせた実装方法は以下の通りです。

mt-search.cgiを使ったタグ別ページの標準URLは、
<mt-search.cgi?tag=KEYWORD&blog_id=BLOGID>
となるので、このURLを以下のように置換しました。

<http://rakish.org/typer/tag/KEYWORD>

以下の内容を「.htaccess」ファイルに記述してブログのルートディレクトリに置きます。

RewriteEngine On
RewriteRule ^tag/(.*)$ cgi/mt/mt-search.cgi?tag=$1&blog_id=IDナンバー

※最後の"IDナンバー"はブログによって異なります。

こうすれば、例えば
置換後URL>にアクセスすれば、<置換前URL>と同じ結果を得る事が出来ます。

静的化したエントリー・タグURL MT上での設置方法

ここまではいいとして、ではどのようにこの置換後のURLを動的に生成してテンプレートにリンクとして出力するかですが、これは以下の通り。
エントリー・タグの名称を生成する<$MTTagName$>を記述しアンカータグで囲み、"href="の部分に<$MTBlogURL$>tag/KEYWORD としてみました。これで、KEYWORDの前までは固定の文字列で、KEYWORD部分だけが可変になり、動的に置換後のURLを生成する事が出来ました。

これでエントリー・タグ別のページを検索エンジンにインデックスさせる事が出来るかな。しばらく様子を見てみましょう。




blank_space
投稿者 rakish : 2006年7月17日 21:13 [ インターネット ]
MT3.3のエントリー・タグ機能実装の前後エントリー

前の記事« Web Inside Blog
静的にRewriteしたURLがインデックス »次の記事

blank_space
MT3.3のエントリー・タグ機能実装のタグ

MovableType,mod_rewrite

blank_space
MT3.3のエントリー・タグ機能実装へのコメント

難しそうなことやってますね。
私もバージョンアップしたいのですが、時期を失してしまい、未だ3.01です。
あー、3.3にしたいなぁ。

投稿者 sbt : 2006年7月30日 22:24

sbtさんどうもです。
先日はコメント頂いたにも関わらず、エラーを吐いてしまったみたいで申し訳なかったです。
懲りずにコメント頂いてありがとうございます。

3.01でもバージョンアップは可能だと思いますよ。
僕も相当調べ尽くしたんでよければやりますよ?

ちなみにmotoさんはバージョンアップに失敗したみたいですね。。。

投稿者 RYO : 2006年7月31日 20:05

てへ。

投稿者 moto : 2006年8月 1日 20:37

マジすか?
でもせっかくなので、自分でもトライしてみたいな。
バージョンアップの失敗って、何が原因なんですかね。
って、motoさんとこ、えらい変わりましたね。
初期化は怖いなぁ。

投稿者 sbt : 2006年8月 1日 22:26

DBのコンバートがうまくいかなかった。
文字コードの設定なのかな?コンバート後に文字化け炸裂、で、めんどくさくなったので初期化しました。
でもね、以外とスッキリしますよ(笑)

投稿者 moto : 2006年8月 1日 23:16

>motoさん
sqliteへのコンバート失敗したんですか?
文字化け炸裂とは奇怪な現象ですね。。
何がダメだったのかなぁ。。

>sbtさん
さすがですね。そうとくればトライあるのみですね!
「mtフォルダ」の中身をやる前にバックアップを取っておけば大丈夫ですよ!
もし失敗しても原因突き止めるまで散々弄くり倒して、諦めたらバックアップしていたものを再アップロードすれば一瞬で直りますから。

>以外とスッキリしますよ
そこまであっさりと過去を捨てられないですね。。

投稿者 RYO : 2006年8月 2日 01:30
blank_space
MT3.3のエントリー・タグ機能実装にコメントする





保存しますか?



blank_space
トラックバック

このエントリーのトラックバックURL : http://rakish.org/cgi/mt/mt-tb.cgi/251

blank_space
キャンペーン
blank_space
Powered by
movabletype.gif

3column Template RGM79GM
blank_space