MODXタグと書き方

MODXで使用されるタグ(変数)の種類と書き方の説明です。

MODXタグとは

MODX のテンプレートは内容が変化する部分に MODX タグ(変数)を記述して作っていきます。
タグや条件分岐の書き方は他の CMS と比べると少し独特なので最初は覚えるのが大変かもしれませんが、一通り覚えてしまうとテンプレートにそのままPHP を使用していない分、制作やメンテがとてもしやすいです。

MODXのタグ一覧

MODXの機能EvolutionRevolution
リンクURL [~id~] [[~id]][[!~id]]
リソース変数 [*name*] [[*name]][[!*name]]
テンプレート変数 [*name*] [[*name]][[!*name]]
チャンク {{name}} [[ $name]][[!$name]]
スニペット [[name]][!name!] [[name]][[!name]]
プレースホルダ [+name+][+@`text`+] [[+name+]][[!+name+]]
レキシコン(言語) なし [[%name%]]
システム設定 [(name)] [[++name]]
ベンチマーク [^name^] [^name^]
コメント <!--@MODX:--> なし
IF文 <@IF>value<@ENDIF> なし

通常は左側のキャッシュありを使います。
右側のように「!」を付けて呼ぶと呼び出し結果のキャッシュをしません。

画像のようにタグにパラメータやモディファイア(装飾)をつけることが出来ます。

名前の付け方

テンプレート変数、スニペット、チャンクなど MODX タグの名前の部分には英数字の他に日本語も使用できるので、自分で分かりやすい名前を付けることができます。あとで検索しやすくなるので文章中に頻繁に出現しそうな短い単語ではなく、若干かぶりにくい名前がお勧めです。

[[サムネ作成? &url=`image.png`]]

悪い例

  • タグ
  • 記事一覧

良い例

  • 関連タグ
  • 備忘録の記事一覧

名前の変更

名前を後から変更した場合、その機能自体のタグを使って直接記述されている場合は自動的に新しいものに変換されますが、拡張機能のテンプレートとして使っているチャンク名や mm_rules など、コード内の記述はシステムでは判断出来ないため自分で修正する必要があります。念のためリソース検索やモジュールの Doc Finder で使っている場所を確認しておいたり修正するのがいいでしょう。

パラメータ

スニペットとチャンクではパラメータを記述できます。このパラメータを渡すことで、スニペットのプロパティを上書きする事ができます。
記述方法は、スニペット名のあとに「?」を付け、「&名前=`値`」で記述します。

[[mySnippet? &param1=`val1` &param2=`val2`]]

URLと似ているので馴染みやすいかもしれません。

パラメータが長くなる場合は改行やコメントもできます。

[[mySnippet?
  //&param1=`val1`
  &param2=`val2`
]]

チャンクでも使用可能です。パラメータの値をチャンク側で使用する事ができます。

{{chakname?name=`hoge`}}

値はなるべくバックウォート`で囲みます。他にダブルクォート"とシングルクォート'も使用できます。特にネストするような場合は囲んで置いた方がトラブルが少なくなります。

  • バックウォート - MODX 変数を展開してから渡します。
  • ダブルクォート - バックウォートと同じ。入れ子になるような場合に使います。
  • シングルクォート - MODX 変数の記述を展開せずに直接渡します。

MODXタグのネスト(入れ子)

MODX タグ同士はネストする事が出来ます。スニペットの結果をスニペットのパラメータにしたり、長くなる場合はネストされるコードをチャンクにしておくことも出来ます。

例1)現在のページをメニューの開始位置にする。

[[Wayfinder? &startId=`[*id*]`]]

例2)名称そのものに使用することもできます。(可変変数みたいな使い方)

{{[*注意事項*]}}

例3)欲しい記事のIDを取得する処理まで自作して、表示は Ditto にお任せする。

[[Ditto &documents=`[[ランキング商品ID取得]]`]]

あまり複雑過ぎるネストやモディファイアの乱用はソースの見通しを悪くしたりパフォーマンスを悪化させるみたいなのでほどほどにしておいた方がよさそうです。

パラメータ付きのタグをネストする際は値を囲む記号を外側と内側で変えるようにしましょう。

[[SnippetA? &var=`[[SnippetB? &name="[*id*]"]]`]]

プレースホルダ

[+varname+]

スニペットまたはプラグインによって提供される専用タグです。たとえば記事の一覧を表示するスニペットがあったとして、タイトル文字列・記事のURL・本文などのレイアウトパターンを自由にカスタマイズできると便利です。スニペット中のみで使用できるローカルのものとリソースやテンプレートでも使用できるグローバルなプレースホルダがあります。

また、変数の値ではない任意の文字列にモディファイアを使用したい場合に、以下のように@マークで即時に使用する事が出来ます。

[+@`文字列`+]

以下の例は、ファイルの内容を取得してエスケープモディファイアを適用して出力します。

[+@`ファイル名`:file_get_contents:esc+]

モディファイア

モディファイアは値を処理して出力します。条件をつけて出力したりタグの除去や文字数の制限をつけたり出来ます。

書き方は変数名に続けて「:」コロンで繋げて記述します。

例1)戻り値がない場合パンくずの代わりにサイトスローガンを表示します。

[[TopicPath:ifempty(`[(site_slogan)]`)]]

例2)複数繋げる事もできます。

[*memo:limit(`150`):esc*]

MODXタグを使用出来る場所

基本的に画面上に表示されるような所なら大抵の場所で使用できます。
例えばチャンク内、リソースのリソース名部分、管理画面のテンプレート変数のカスタム入力タイプだったり。

Edited on 2017.02.15 Created on 2014.04.30 MODX
PAGE TO TOP