モディファイア

最終更新日
2017.10.11

移行作業中のため一部のページが正しく表示されていない場合があります(o-ω-))

MODX のモディファイアの使い方を説明します。

モディファイアは MODX タグが返す値に書きだす条件をつけたり装飾や加工する事が出来る修飾子です。これを使用することでスニペットを作らなくても簡単な処理が出来るようになっています。

記述方法

リソース変数やスニペットなど MODX タグの名前部分にコロンで続けて記述します。

[*introtext:mdf*]

コロンで複数のモディファイアを繋げる事ができます。以下の例では mdf1 の結果を使用して mdf2 を実行します。必要ならモディファイアにはパラメータを持たせることも出来ます。

[[mySnippet:mdf1(`opt`):mdf2? &param=`test`]]

スニペットにパラメータがついている場合は最後ではなくスニペット名の直後に書きます。

パラメータはスニペットなどと一緒でなるべく`で囲むようにしましょう。

Evoの内蔵モディファイア一覧

内蔵 PHx のモディファイア一覧です。把握できてないものもありますがソースコードのリストから試せたのだけ説明を記述しています。プラグイン版のPHx は個人的にあまり使っていない&使う予定がないので全然把握していません。

条件式

  • if input

    optを値として返す
    [*mytv:input(TRUE)*]
  • equals is eq

    $value == $opt 値がoptと一致すれば
    [*mytv:eq(123):then(一致した):else(一致しない)*]
  • notequals isnot isnt ne

    $value != $opt 値がoptと一致しなければ
    [*mytv:ne(123):then(一致しない):else(一致した)*]
  • isgreaterthan isgt eg

    $value >= $opt 値がopt以上なら
    [*mytv:eg(123):then(大きい):else(小さい)*]
  • islowerthan islt el

    $value <= $opt 値がopt以下なら
    [*mytv:el(123):then(小さい):else(大きい)*]
  • greaterthan gt

    $value > $opt 値がoptを超えるなら
    [*mytv:gt(123):then(A):else(B)*]
  • lowerthan lt

    $value < $opt 値がopt未満なら
    [*mytv:lt(123):then(A)else(B)*]
  • find

    文字列が含まれていれば
    [*mytv:find(cd):then(含まれる):else(含まれない)*]
  • preg

    文字列が含まれていれば
    [*mytv:preg(/a\w+?d/):then(含まれる):else(含まれない)*]
  • or

    または 条件を組み合わせるときに使用
    [*mytv:eq(100):or:eq(200):then(A):else(B)*] 
    100または200なら
  • and

    さらに 条件を組み合わせるときに使用
    [*mytv:gt(100):and:lt(200):then(A):else(B)*] 
    100より多くて200より小さければ
  • show this

    条件を満たした場合値を表示
    [*mytv:find(ab):show*]
    文字列「ab」が含まれていれば
  • then

    マッチした場合の返り値
    findなど参照
  • else

    マッチしなかった場合の返り値
    findなど参照
  • select switch

    optのリストの中から当てはまるキーの値を返します
    [*mytv:select(key1=value1&key2=value2)*]
    mytvがkey1の場合value1を返します

文字列の操作

  • length len strlen

    文字の長さを返す マルチバイトも1文字計算
    あいうえお -> 5
  • ucase strtoupper

    大文字にします
    AbCde -> ABCDE
  • lcase strtolower

    小文字にします
    AbCde -> abcde
  • ucfirst

    最初の文字を大文字にする
    abCdEf -> AbCdEf
  • lcfirst

    最初の文字を小文字にする
    AbCdEf -> abCdEf
  • ucwords

    文字列の各単語の最初の文字を大文字にする
    [*mytv:ucwords*]
    AbC dEf ghi -> AbC DEf Ghi
    [*mytv:strtolower:ucwords*]
    AbC dEf ghi -> Abc Def Ghi
  • str_shuffle shuffle

    文字をシャッフルする(ランダム)
    [*mytv:shuffle*]
    あいうえお -> うあおいえ
  • reverse strrev

    逆順にする マルチバイトも対応
    あいうえお -> おえういあ
  • addbreak

    改行コードの前に改行タグを挿入する ※タグのみの行は除外
    なし
  • nl2br

    改行コードの前にHTMLの改行タグを挿入する
    なし
  • br2nl

    HTMLの改行タグを改行コード¥nに変換します
    なし
  • nl2lf

    改行コードを¥nに変換して統一
    なし
  • limit

    optの長さで文字列を切り落とす
    [*mytv:limit(10)*]
    このページはMODXのTipsサイトです -> このページはMODX
  • trim_to

    最初の N 文字を取り出します
    なし
  • trim

    文字列の先頭および末尾にあるホワイトスペースを取り除く
    なし
  • rtrim

    文字列の最後から空白を取り除く
    なし
  • ltrim

    文字列の最初から空白を取り除く
    なし
  • . cat

    値があればoptを付け足して表示
    [*mytv:limit(100):.(...)*]
  • replace_to

    値があればoptのテンプレートを使用
    [*mytv:replace_to([+value+])*]
  • str_replace replace

    optで文字変換 変換前,変換後
    [*mytv:str_replace(★,☆)*]
    ★abc★ -> ☆abc☆
  • esc escape

    MODXタグおよび特殊文字をHTML エンティティに変換する
    なし
  • strip

    改行コード、スペース、タブを半角スペースに変換
    なし
  • notags strip_tags remove_html

    HTMLタグを除去。optを付けた場合それだけ許可
    [*mytv:notags(b,i)*]
  • addslashes

    文字列をスラッシュでクォートする
    abc's modx -> abc\'s modx
  • htmlent htmlentities

    適用可能な文字を全てHTMLエンティティに変換する
    [*mytv:htmlent*]
  • html_entity_decode

    HTMLエンティティを適切な文字に変換する
    なし
  • zenhan

    全角を全角にする
    [*mytv:zenhan*]
    ABCD -> ABCD
  • hanzen

    半角を全角にする
    [*mytv:hanzen*]
    ABCD -> ABCD
  • capitalize

    最初の文字を大文字にします
    なし
  • count_words

    値に含まれる単語の数を出力します
    なし
  • count_paragraphs

    段落数(空白行を含まない行数)を出力します
    なし
  • str_word_count word_count wordcount

    値に含まれる単語の数を出力します
    [*mytv:word_count*]
    abc def,ghi/ab12 -> 4
  • wordwrap

    optの長さでワードラップする
    [*mytv:wordwrap(10)*]
    abcdefghijklmnopqrstuvwxyz -> abcdefghij klmnopqrst uvwxyz
  • summary smart_description smart_desc

    文章の一部を切り出します
    なし

エンコード&ハッシュ

  • md5

    文字列のmd5ハッシュ値を計算する
    なし
  • sha1 encode_sha1

    変数の値をsha1形式に変換して出力します。
    なし
  • base64_decode

    MIMEbase64エンコードされた文字をデコードする
    なし
  • base64_encode

    MIMEbase64方式でデータをエンコードする
    なし
  • rawurldecode

    URLエンコードされた文字列をデコードする
    なし
  • rawurlencode

    RFC3986に基づきURLエンコードを行う
    なし
  • urldecode

    URLエンコードされた文字列をデコードする
    なし
  • urlencode encode_url

    文字列を URLエンコードする
    なし

その他

  • id

    optのidのリソースを参照します
    [*pagetitle:id([*parent*])*]
  • ifempty _default default

    値が空ならオプションを値として表示します
    [*longtitle:ifempty([*pagetitle*])*]
  • ifnotempty

    値が空でなければオプションを値として表示します
    なし
  • strftime date dateformat

    日付フォーマットして返します
    [*createdon:date(%Y.%m.%d)*]
  • time

    デフォルトは時間だけ表示します。
    [*createdon:time*]
  • math

    計算式を実行します。値は?で参照できます。
    [*mytv:math((?+2)*2)*]
  • googlemap googlemaps

    値を座標にしてgoogleマップを取得
    [*mytv:googlemap(border:none;width:400px)*]
  • tobool

    ブーリアン型に変換する
    なし
  • tofloat

    浮動小数点数に変換
    1.2e34 -> 1.2E+34
  • toint

    整数にする
    123.456 -> 123
  • dataGrid

    CSVまたはTSVをtableタグによる表組みに変換します
    なし
  • getimageinfo imageinfo

    画像ファイルの情報を取得します
    なし
  • filesize

    ファイルサイズを取得します
    なし

カスタムモディファイア

「phx:」から始まる名前のスニペットを作ることで自作のモディファイアを自作できます。

スニペット名「phx:myModifier」

<?php
return "(value:{$value} opt:{$opt})";

モディファイアは同じように記述、オプションが付けられます。

[*mytv:myModifier(opt)*]