MR.NiNi About Log Tech Graph Memo Books Twitter

About
Log
Tech
Graph
Memo
Books
Twitter

MODxに関するメモ書き

取りとめのない雑多なメモ書きです。
後で体系立てて整理します。



【条件分岐(スニペット編)】
MODxで条件分岐をする場合、StartIf / EndIfのスニペットを使用すると良いようです。
ただ、件のスニペットのver 1.01ではelseを使用した条件分岐や、switch()のような複数条件で挙動をそれぞれ変えるような挙動は出来ないので、そういう挙動が必要な場合はスニペットを自作する必要があります。

具体例として、自作したテンプレート変数の値に応じて戻り値を変えるスニペットを作る事にします。

テンプレート変数:testcategory
スニペット名:categorychange

スニペットの内容
<?php
  $msg = '';
  switch($category){
    case 'カテゴリ1':
      $msg='cat1';
      break;
    case 'カテゴリ2':
      $msg='cat2';
      break;
    case 'カテゴリ3':
      $msg='cat3';
      break;
    default:
      $msg='unknown';
      break;
  }
  return $msg;
?>

内容としては「カテゴリ1」の場合は「cat1」を、「カテゴリ2」の場合は「cat2」を、「カテゴリ3」の場合は「cat3」を、どれでもない場合は「unknown」をそれぞれ返すというものです。
チャンクから上記スニペットを呼び出す場合は以下の通り記述します。

[[!categorychange? &category=[+testcategory+]]]

Ditto経由で呼び出す場合、呼び出し元のテンプレートに、上記テンプレート変数「testcategory」と関連付けをしておく必要があります。
なお、上記のコードは2012年8月時点の最新版であるMODx 1.0.6J-r5で動作確認しております。
※若しかしたら記述漏れ等の理由により動かないかも知れませんが

最終更新:2012年9月5日