Movable Type プラグインディレクトリ
Regex
ユーザーが正規表現を自由に定義し、その正規表現を基にエントリーの内容を書き換えたり、条件分岐したりできます。
インストール方法
- ダウンロードしたアーカイブを解凍します。
- 解凍して生成された「regex.pl」ファイルを、Movable Typeの「plugins」ディレクトリにアップロードします。
- 同じく生成された「regex.pm」と「postproc.pm」をMovable Typeの「extlib」ディレクトリ内に「bradchoate」というディレクトリを作成し、そこにアップロードします。
使い方
<MTRegexDefine>で正規表現を定義して、regexフィルターや<MTIfMatches>で使用すると言うのが主な使い方となります。Regexプラグインは以下のタグを用意しています。
MTRegexDefine
正規表現を定義するコンテナタグです。以下のアトリビュートに対応しています。
- name
- no_html="1"
正規表現に名前を付けられます。名前を付けると、特定の正規表現のみを参照することができます。
HTMLタグは正規表現のマッチの対象とならなくなります。
MTRegexDefineは以下のように使用します。
<MTRegexDefine name="regex1">s|:-D|<img src="/images/smiley.gif" height="32" width="32">|g</MTRegexDefine>
この例は、「:-D」という文字列を画像に置換する正規表現です。
定義した正規表現を使用するにはregexフィルターを使用します。
<$MTEntryBody regex="1"$>
とすると、<$MTEntryBody$>の内容が置換対象となります。
<MTRegexDefine name="regex1" no_html="1">s|google¥(([^¥)]+)¥)|<a href="http://www.google.co.jp/search?q=$1">$1</a>|ig</MTRegexDefine> <MTRegexDefine name="regex2">s|:-D|<img src="/images/smiley.gif" height="32" width="32">|g</MTRegexDefine> <MTRegexDefine name="regex3">s|www¥.so-net¥.co¥.jp|www.so-net.ne.jp|g</MTRegexDefine>
この様に正規表現に名前を付けることもできます。regex1の例は「google(単語)」という記述を、Googleへのリンクに置換する正規表現です。
<$MTEntryTitle regex="regex1"$> regex1の正規表現のみが有効となります <$MTEntryBody regex="1"$> 全ての正規表現が有効となります <$MTEntryMore regex="regex1 regex2"$> regex1とregex2の正規表現が有効となります <$MTCommentBody regex="s/this/thatg/"$> 独自の正規表現を指定します
最後の書き方では正規表現に「$」を使用することはできません。$1などを使用したい場合は<MTRegexDefine>で事前に定義してください。
MTIfMatches/MTIfNotMatches
正規表現にマッチした/マッチしないものだけを表示する条件分岐用のコンテナタグです。以下のアトリビュートに対応しています。
- var
- expr
- value
- pattern
MTタグの内容を正規表現のマッチング対象とする場合に使用します。指定する場合は、タグを意味する<、>、$と先頭の「MT」を取り除きます。
MTタグをアトリビュート付きで呼び出したい場合はvarではなくexprを使用します。指定する場合は、タグを意味する<、>、$を除き[ ]で囲みます。
正規表現ではなく文字列と比較する場合に使用します。
正規表現を指定します。
MTIfMatches/MTIfNotMatchesは以下のように使用します。
<MTEntries> <MTIfMatches pattern="m/Movable Type/"> <$MTEntoryBody$> </MTIfMatches> </MTEntries>
「Movable Type」という文字列を含むエントリーのみを表示します。
<MTEntries> <MTIfNotMatches var="EntryCategory" pattern="m/(moblog|diary)/"> <$MTEntoryBody$> </MTIfMatches> </MTEntries>
カテゴリが「moblog」「diary」以外のエントリーを表示します。
<MTComments> <MTIfNotMatches expr="[MTCommentAuthorLink show_url='1']" pattern="m/a href/"> <$MTCommentBody $> </MTIfMatches> </MTComments>
URLが入力されたコメントのみを表示します。
<MTIfMatches var="BlogEntryCount" value="1000"> <blink>1,000個エントリー達成!</blink> </MTIfMatches>
エントリーの数が1,000個の場合表示されます。
カスタマイズ情報
特になし
その他付加情報
特になし
トラックバック
- トラックバック URL