CMSのポテンシャルを引き出す─MODxで作る商用サイト

第7回 もっと作業効率アップ,カスタムテンプレート変数を活用する

この記事を読むのに必要な時間:およそ 2 分

カスタムテンプレート変数を別リソースから参照する

このように,カスタムテンプレート変数は各ページから簡単に参照できるのが魅力ですが,なかみつ園の構成を見てみると,個別の商品紹介ページだけでなく,商品の一覧ページにも内容量や価格を表示しています。個別商品ページと一覧ページで価格の差異があると大変ですので,ここでも各リソースのカスタムテンプレート変数を呼び出し,一覧として表示するようにしています。

このように,Aというリソースに含まれるpriceというテンプレート変数をBというリソースから参照させたい場合には,スニペットを活用します。スニペットとはプログラミングにおける関数のようなものだと解説しましたが,ちゃんと覚えていますか?

getResourcesスニペットの導入

別リソースのテンプレート変数を取得し表示するだけであれば,簡単なスニペットを独自で記述しても良いのですが,各リソースの情報を様々な形式で表示するための便利なスニペットのひとつがgetResourcesです。例のごとく,パッケージマネージャから導入を行います。

getResourcesスニペットの使い方はWayfinder同様多彩で,商品一覧ページ内で,とある商品の価格を単体で表示することもできれば,商品一覧ページ自体を半自動で作成することもできてしまいます。ですが,いまさらながら本連載の信念は「まずは触れてみて楽しむ。詳細は後から」ですので,今回もスニペットの使い方の一例を紹介しておき,詳細については後々触れていくようにします。

では,今回は「商品紹介(8)」ページに「生姜紅茶(10)」の価格を表示させてみます。なお,()内の数字はそれぞれのリソースIDです。

まず,商品紹介ページの中では,次のようなスニペットを定義しておきます。

[[!getResources? &parents=`10` &resources=`10` &includeTVs=`1` &tpl=`pricetpl`]]

この1行が持つ意味は,以下のようになります。

  • スニペットをキャッシュさせない
  • 親リソースIDは10(生姜紅茶)
  • 対象のリソースIDは10(生姜紅茶)
  • テンプレート変数を有効にする
  • 表示のために使用するテンプレート名(チャンク名)はpricetpl

次に表示に使用するチャンクを表2のような内容で作成します。

表2 表示に使用するチャンク

チャンク名pricetpl
内容<strong>[[+tv.price]]</strong>

最後に,商品紹介ページを見てみると,スニペットの記述により別リソースの変数が表示されているはずです図3)⁠

図3 表示されるリソースが切り替わったところ

図3 表示されるリソースが切り替わったところ

最後に

このように,MODxの魅力のひとつはテンプレート変数を活用することにより,情報を様々な場所から参照,再利用できるところにあります。価格や商品コード,内容量などサイト内のさまざまな箇所から参照されるであろう値をHTML中にハードコードする必要はもはやありません。再利用が考えられる値については,積極的にテンプレート変数の導入を考えてみましょう。

最後の最後になりますが,やっと新茶での提供が可能となりました薫風の今年の味には自信ありです。爽やかな若葉の香りと甘く深い味わいは,文章では形容しがたいため,普段お茶に興味のない方も,ぜひこの機会にお試しいただけると幸いです。

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。