Home > Webの話題 TOP > チャンクの中でスニペットを使う。Dittoの例。
modxのスニペットと呼ばれるプログラムはチャンクの中でも使えます。その一例として、Dittoをチャンクで使うケースを紹介します。
右図では、目次以下を複製してコンテンツを増やして行く、Webマガジンのようなコーナーを想定しています。
常に最新号の先に公開された記事2つをトップページに表示するものとします。便宜上全体の記事数を3つとしていますが、4つでも5つでも構いません。
図での最新記事は、「記事6」ということになります。では、「記事4」、「記事5」を取得するにはどうすれば良いでしょうか。
オーソドックスな方法では、Dittoの親ドキュメントを1として、並び順を指定するテンプレート変数を作成し、&orderByパラメーターで『変数名 DESC,createdon DESC』(DESCはデフォルトなので省略可)と指定します。
ここでは、敢えて「目次2」の「未定のid」を取得し、Dittoに入力する方法を紹介します。[!Ditto? &parents=`未定のid`! &hideFolders=`1` &display=`2`!]
とするには、どうすれば良いでしょうか。Dittoの表記を[!Ditto? &parents=`1` &hideFolders=`1` &display=`1` tpl=`id`!]
とし、テンプレートのチャンクの中身を[+id+]
とすれば、目次2のidを取得できます。
しかし、[!Ditto? &parents=`[!Ditto? &parents=`1` &hideFolders=`1` &display=`1` tpl=`id`!]` &hideFolders=`1` &display=`1`!]
のようにDittoの中にDittoを記述しても動きません。
それではどうするかと言うと、[!Ditto? &parents=`1` &hideFolders=`1` &display=`1` tpl=`id`!]
をチャンクの中に書いておきます。このチャンク名は"get_num"とでもしましょうか。
出力したい場所に[!Ditto? &parents=`{{get_num}}` &hideFolders=`1` &display=`2`!]
とすれば、未定のidを取得し、記事4、記事5の表示が可能です。
ポイントは、1つの価を出力するためにチャンクを2つ作成すること。一つはDittoを記述するチャンク、もう一つは、Dittoのテンプレートチャンクです。
これはどういう場面が実用的かと言うと、不定期に除外したいコンテンツが増える場合の&filterの数値入力が考えられます。その際には、テンプレートに[+id+],
のようにカンマを入れておきましょう。
【関連記事】
Dittoとテンプレート変数、Taggingで多彩な並び順を表示する。
中小企業や商店のWebサイトにModxが良いと思う理由(動画あり)。
2012.05.21
記事制作:管理人
記事制作:管理人
雑談はこちら
※コメントは承認制です。反映に多少お時間を頂きます。