いくつかのモディファイアの使用例

(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-->