いくつかのモディファイアの使用例
(posted at: 2015-10-20)
MODX Evolution 1.0.14J-r9 で、MovableTypeのグローバルモディファイアが移植されるなど、内蔵PHxのモディファイアの充実化が図られた。実践的モディファイヤの使用方法について考察してみる。
テンプレートを共通化する
トピックスの一覧ページと記事ページのテンプレートを共通化する
メインカテゴリごとに、階層の縦方向にテンプレートを共通化したい場合に使用。
▼コンテンツ部分のコード例
<!--@IF:[*isfolder*]> [[Ditto?tpl=サブリソース一覧]] <@ELSE> [*content*] <@ENDIF-->
階層ごとのテンプレートを共通化する
カテゴリごとにデザインや表示項目が異なる場合などに。条件分岐で出力内容を制御する。たとえば、カテゴリ固有の id 値を body タグにセットしておけば、id 指定で CSS設定が可能になる。
▼body タグのコード例
<body id="[[GetField? &parent=`1` &parentLevel=`2` &field=`ailas`]]">
日付の出力形式を制御する
▼日付を含む一覧出力のコード例
[[Ditto? &orderBy = createdon DESC &depth = `3` &hideFolders = `1` &display=`10` &id=`entryList` &paginate=`1` &tpl = '@CODE: <article> <h3><a href="[~[+id+]~]" class="blog-title">[+longtitle+]</a></h3> <p>[+introtext+]<br> <span class="blog-data">(posted at: [+createdon:date=`%Y-%m-%d`+]|category: <a href="[~[+parent:id+]~]">[+parent:pagetitle+]</a>)</span></p> </article> ' // 表示パターン ]]
上記のコードで、要約(introtext)が100文字以上ならば、100文字表示に続いて「・・・」を出力する。
[+introtext:summary(100)+] <!--@IF:[*introtext:gt(100)*]>...< @ENDIF-->