カスタムフィルターの使い方

このエントリーをはてなブックマークに追加

テンプレート変数のプロセッサ「Custom Filter」は、登録されているプロセッサ以外の表示方法を自作できます。
そのテンプレート変数に値を入れているドキュメントのみOutput部分に書かれた内容が代わりに表示されるようになります。

※Ver1.0.13J(2014/04)から名称が「Custom Widget」から「Custom Filter」に変更されました。

使用できるプレースホルダ

[+value+] 入力、選択された元の内容

その他ドキュメント変数、各MODXタグ、他のテンプレート変数の値が使用できます。

Outputに[+value+]とだけ書いた場合元の内容が何も処理をせずに表示される事になります。
Outputで以下のように設定した場合、プロセッサをImageにしたのと似たような結果になります。

<img src="[+value+]" class="pct" />

入力内容をチャンク名として使用することもできます。

{{[+value+]}}

スニペットを使用して表示処理をする

複雑な処理を加えたい場合は、Output内でスニペットを使用できます。
基本的にテンプレートやドキュメント内でスニペットに変数を送るのと同じですが、適当なパラメータで[+value+]を送ります。

カスタムフィルターの内容

[[myWidget &value=`[+value+]`]]

スニペットの例 myWidgetの内容

return ($value=='poyo') ? "<div class=\"box\">{$value}</div>" : "";

内容がpoyoならタグ付きで表示します。

項目の中身が無いときは何も表示させないようにする

何か入力されていれば見出しや枠付で表示して、何も入力されていなければ見出しも枠も表示させたくないという場合、カスタムウィジェットを使うとスニペットを作らなくても良いので簡単に設定できます。

以下の例は特記事項に何か入力があった場合のみ、見出しとdivで枠を表示します。

カスタムフィルターを使用する場合、Dittoなどではテンプレート変数を使用する時フィルターを通した結果が返されるので、いろんな場所で表示方法を変えたい項目ならば少し注意が必要です。

チャンクを使用してドキュメントによってテンプレート変数の内容を切り替える例

チャンクを使用してドキュメントによってテンプレート変数の内容を切り替える例

Edited on 2015.07.20 Created on 2012.08.20 MODX
PAGE TO TOP