MovableTypeプラグインの作り方 - 第3回:フィルタ

Posted by
ぴろり
Posted at
2006/03/31 14:28
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
MovableType カテゴリ
 第3回はフィルタについての説明です。 フィルタ(filter)とは、入力されたデータを篩(ふるい)に掛けて選別を行い、 所望の出力データを得るための処理です。これまで説明した 変数タグコンテナタグ条件タグと、 今回説明するフィルタを以って、 MT の標準で拡張できる範囲は、あらかた網羅できたことになります。
この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する | Twitterにポストする

目次

 一度では全て書き切れないので、幾つかの連載記事とする予定です。 MovableType のヘルプドキュメント にある内容を網羅し、これに沿った形で書いていくつもりですので、併せて読み進めていただけるとモア・ベターかと思います。 よろしくお付き合いくださいませm(_ _)m

グローバルフィルタ

 グローバルフィルタ(global filter)とは、 encode_htmlupper_case のように変数タグで使用され、 その変数タグの出力結果に何らかの影響を与えるものです。 グローバルフィルタは、"グローバル"の名の通り、あらゆる変数タグに指定することができます (果たしてそれが意味あるものかは別にして)。
 次の例は、変数タグ中の特定の文字を置換します(sample_3_1.pl)

 このフィルタは次のように使用することができます。

sample_3_1.pl は UTF-8 で書かれています。 の文字コードに合わせて、を保存し直してください。

コードの詳細

MT::Template::Context->add_global_filter (HG => ¥&HG);
 HG という名前のグローバルフィルタを定義し、 その処理は HG に書かれている、ということ。
my ($data, $arg, $ctx) = @_;
 フィルタに入力された文字列、フィルタへの引数、現在のコンテクストを取得します。おまじない。
$data =‾ s/。/フゥーーー!! /g;
 入力された文字列中の読点"。"を全て"フゥーーー!!"に置き換えます。
$data;
 処理された結果を出力します。

グローバルフィルタの引数

 グローバルフィルタでも、その動作を変更できるよう引数を取ることができます。 $arg には、HG="..." で指定された値が代入されているので、 この値を使用してフィルタの動作を変化させることが可能です(sample_3_2.pl)

コードの詳細

my $star = '☆彡' x $arg;
 $arg で指定された回数だけ、 '☆彡'を繰り返し、これを $star に代入します。
$star. $data. $star;
 入力された文字列の前後に $star で囲んで出力します。

コンテナタグによる実現

 グローバルフィルタと同様の機能を、 コンテナタグとして無理矢理書き換えてみると、 次のようになるでしょう(sample_3_2a.pl)

 グローバルフィルタで済むところは、素直にグローバルフィルタを使っておくのが良いでしょう。

テキストフィルタ

 テキストフィルタは、MT のエントリ編集画面にある"改行設定"に新しい項目を追加することができます。 本来(?)は、 Wiki記法はてな記法 などで書かれた文書に、適切にフィルタ処理を施して所望のデータを得る、といった使途に使います。
 ここでは、入力されたテキストを逆毛語化する、 逆毛語フィルタを作ってみます(sample_3_3.pl)

sample_3_3.pl は UTF-8 で書かれています。 の文字コードに合わせて、を保存し直してください。

コードの詳細

MT->add_text_filter ('sakage'
 sakageという内部名でテキストフィルタを追加します。 グローバルフィルタfilter="..."で指定する場合に使用します。
label => '逆毛語'
 "改行設定"ドロップダウンリストに表示されるフィルタ名称です。
on_format => ¥&sakage
 フィルタが選択された時に、適用する処理は sakage に書かれている、と云うこと。
my ($data) = @_;
 入力された生のデータ。これに対してフィルタ処理を行います。 この辺りはグローバルフィルタと同じです。

サンプルファイルの

 この記事で使用したのプログラムコードを ダウンロードできます。

この記事を読んだ人はこんな記事も読んでいます 記事リコメンデーションについて

その他の関連する記事


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (匿名可/必須/公開)
 (匿名可/必須/非公開)
 (必須)
コメントスパム防止のため投稿前に ランダムな数字 CAPTCHAについて を入力してから投稿してください。お手数ですがご協力のほど宜しくお願いいたします。
 
MovableType, NovableType, JovableType, KovableType, MIvableType, M9vableType, M0vableType, MPvableType, MLvableType, MKvableType, MoCableType, MoFableType, MoGableType, MoBableType, MovQbleType, MovWbleType, MovSbleType, MovZbleType, MovaVleType, MovaGleType, MovaHleType, MovaNleType, MovabKeType, MovabOeType, MovabPeType, MovablWType, Movabl3Type, MovablRType, MovablDType, MovablSType, MovableRype, Movable5ype, Movable6ype, MovableYype, MovableGype, MovableFype, MovableTTpe, MovableT6pe, MovableT7pe, MovableTUpe, MovableTHpe, MovableTGpe, MovableTyOe, MovableTy0e, MovableTy-e, MovableTyLe, MovableTypW, MovableTyp3, MovableTypR, MovableTypD, MovableTypS プラグイン ソースコード Perl, Oerl, 0erl, -erl, Lerl, PWrl, P3rl, PRrl, PDrl, PSrl, PeEl, Pe4l, Pe5l, PeTl, PeFl, PeDl, PerK, PerO, PerP