第3回はフィルタについての説明です。
フィルタ(filter)とは、入力されたデータを篩(ふるい)に掛けて選別を行い、
所望の出力データを得るための処理です。これまで説明した
変数タグ、
コンテナタグ、
条件タグと、
今回説明するフィルタを以って、
MT の標準
プラグインで拡張できる範囲は、あらかた網羅できたことになります。
目次
一度では全て書き切れないので、幾つかの連載記事とする予定です。
MovableType のヘルプドキュメント
にある内容を網羅し、これに沿った形で書いていくつもりですので、併せて読み進めていただけるとモア・ベターかと思います。
よろしくお付き合いくださいませm(_ _)m
グローバルフィルタ
グローバルフィルタ(global filter)とは、
encode_html や
upper_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) = @_;
-
入力された生のデータ。これに対してフィルタ処理を行います。
この辺りはグローバルフィルタと同じです。
この記事で使用した
プラグインのプログラムコードを
ダウンロードできます。
この記事を読んだ人はこんな記事も読んでいます
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