Movable Type 備忘録

 RegexReplace プラグイン

こんばんわ^^

後ほどご紹介しますが、インデックス型検索エンジン設置のために必要に迫られたので、regex_replace モディファイアを拡張!? するプラグイン作ってみました。

拡張といっても、置換元に URL を指定できるようにしただけですけど・・・ってわたしが作るプラグインって小ざかしいのばっかりですいません (; ̄∇ ̄A

regex_replace モディファイアの使い方

regex_replace モディファイアの使い方についてカンタンに記しますね。
たとえば、カテゴリ名称を以下のように作成していたとします。

  1. <0001>CATEGORY( カテゴリ )

既にご存知の人もいるかと思いますが、カテゴリ名称の先頭に <0001> のような番号を割り付けておくと、自分の思い通りの順番にカテゴリを並べることができます ( ̄∇ ̄)b
その場合、以下のように remove_html モディファイアを併用することでカテゴリ名称から先頭の <0001> を削除して表示することができます。

  1. <$MTCategoryLabel decode_html="1" remove_html="1"$>

上記例で示したようなカテゴリ名称の場合には decode_html モディファイアはあってもなくても問題ないです。

さて、本題に戻りまして regex_replace モディファイアを使って、上記カテゴリ名称の日本語だけ表示したい場合には以下のようになります。

  1. <$MTCategoryLabel decode_html="1" remove_html="1" regex_replace="/^.*\( (.*) \)$/","$1"$>

赤字の部分に置換元の文字列、または正規表現を指定します。
青字の部分には置換先の文字列を指定することで、文字列の置換ができます。 ※regex_replace の仕様として、置換元の文字列には必ず '/' で始まって '/' で終わらなければなりません。

上記例を言葉にすると、『( ) で囲まれた中の文字列を抜き出して表示』ということをやっています。
※正規表現については '正規表現' で検索するとたっくさんで HIT しますのでご確認ください。

今度は英字を抜き出して表示をやってみます。

  1. <$MTCategoryLabel decode_html="1" remove_html="1" regex_replace="/\(.*\)$/",""$>

上記例を言葉にすると『( )で囲まれた文字列を削除して表示』ということをやってます。
青字の部分で置換先の文字列を指定しないと削除になります。

と、まぁこんなかんじで regex_replace を使用するわけでして、正規表現さえ覚えてしまえばとっても便利なモディファイアなのです。

そんな regex_replace モディファイアの置換元に変数を使用した場合どうなるか。
たとえば以下のような例を示してみます。

  1.  <ul>
  2.  <mt:SetVar name="path" value="../">
  3.  <MTEntries lastn="0">
  4.   <li><mt:SetVarBlock name="archive_url"><$MTBlogArchiveURL$></mt:SetVarBlock>
  5.   <$MTEntryPermalink regex_replace="/$archive_url/","$path"></li>
  6.  </MTEntries>
  7.  </ul>

上記はエントリページの URL から MTBlogArchiveURL にマッチする部分(http://~/archives/)を相対パス(../)に置換しようとしている例になります。
でも、実際には期待する結果にはなりません。

理由としては、上記 $archive_url には 'http://~/archives/' という文字列がセットされてるのですが、文字列中に '/' が含まれているため期待する置換処理が行われなくなってしまいます。

そこで!! 前フリが長くなってしまいましたが、RegexRepalce プラグインを使って $archive_url 中に '/' が入っていても正しくマッチできるようにしてみました。
使い方はカンタンで、置換元に変数を使用する場合には '/' を含めず指定するだけです。

  1.  <ul>
  2.  <mt:SetVar name="path" value="../">
  3.  <MTEntries lastn="0">
  4.   <li><mt:SetVarBlock name="archive_url"><$MTBlogArchiveURL$></mt:SetVarBlock>
  5.   <$MTEntryPermalink regex_replace="$archive_url","$path"></li>
  6.  </MTEntries>
  7.  </ul>

以上です。
まだベータ版ですが、機能的には満たしております。良かったら使ってみてください (●´∀`●)

ダウンロード

 Trackback Pings(0)

No trackbacks found.

 Comments(1)

#1: Posted by conan @ May 27, 2008 [REPLY]
user-pic

以前からずっとBlogを拝見させて頂いております。
テンプレートもより一層洗練されていて記事内容も大変勉強になります。
記事内容と異なる内容で大変申し訳ないのですが
私も「Movable Type」を最新版にし新たに更新していきたく思っております。
そこで初歩的な事で申し訳ないのですがまずは、記事内容をバックアップし
新たに過去記事をアップし
「Movable Type」を一掃し新たに最新版にしたいのですがどのようにすれば
良いでしょうか?
お手数ですがサポートお願いできないでしょうか?
もしよければコメント頂きたく思います。
宜しくお願いします。

 Post a Comment

 

コメント用フィード