PHxでelseifみたいな使い方をしたいとき
- 2011.04.21 Thursday
- 14:58
PHxはMODxのテンプレート変数などの値によって、条件分岐や表示非表示を切り替えることのできるプラグインです。
便利なんだけどプログラム系でないわたしは、まず書き方を理解するのが大変でした^^;
■書き方の例
・テンプレート変数hogeの値が1のときは画像1を表示し、それ以外のときは画像2を表示する。
[*hoge:is=`1`:then=`<img src="assets/images/1.png" alt="1の画像" >`:else=`<img src="assets/images/2.png" alt="2の画像" />`*]
・テンプレート変数hogeの値が1のときは画像1を表示し、それ以外のときは何も表示しない。
[*hoge:is=`1`:then=`<img src="assets/images/1.png" alt="1の画像" />`:else=``*]
こんな感じでチャンクやテンプレートに書きます。
dittoのテンプレートに使う場合は[+hoge でプレースフォルダにします。
詳しくはMEGUさんのとこの解説などをご覧ください。
さて、ここで以下のような振る舞いをさせたいときどうするか?
テンプレート変数hogeの値が1のときは画像1を表示し、値3のときは画像3を表示し、それ以外のときは何も表示しない。
実はPHxにはelseifに相当する文法がない!
参考:MODx : phx の使い方
これでしばらく悩みましたが、あっけなく解決。値1のときの振る舞いと値3のときの振る舞いを別々に書けばいいのです。
[*hoge:is=`1`:then=`<img src="assets/images/1.png" alt="1の画像" />`:else=``*]
[*hoge:is=`3`:then=`<img src="assets/images/3.png" alt="3の画像" />`:else=``*]
どちらも値がちがう場合は何も表示しないので、実際に表示されるのは片方のhogeの値のみです。
便利なんだけどプログラム系でないわたしは、まず書き方を理解するのが大変でした^^;
■書き方の例
・テンプレート変数hogeの値が1のときは画像1を表示し、それ以外のときは画像2を表示する。
[*hoge:is=`1`:then=`<img src="assets/images/1.png" alt="1の画像" >`:else=`<img src="assets/images/2.png" alt="2の画像" />`*]
・テンプレート変数hogeの値が1のときは画像1を表示し、それ以外のときは何も表示しない。
[*hoge:is=`1`:then=`<img src="assets/images/1.png" alt="1の画像" />`:else=``*]
こんな感じでチャンクやテンプレートに書きます。
dittoのテンプレートに使う場合は[+hoge でプレースフォルダにします。
詳しくはMEGUさんのとこの解説などをご覧ください。
さて、ここで以下のような振る舞いをさせたいときどうするか?
テンプレート変数hogeの値が1のときは画像1を表示し、値3のときは画像3を表示し、それ以外のときは何も表示しない。
実はPHxにはelseifに相当する文法がない!
参考:MODx : phx の使い方
これでしばらく悩みましたが、あっけなく解決。値1のときの振る舞いと値3のときの振る舞いを別々に書けばいいのです。
[*hoge:is=`1`:then=`<img src="assets/images/1.png" alt="1の画像" />`:else=``*]
[*hoge:is=`3`:then=`<img src="assets/images/3.png" alt="3の画像" />`:else=``*]
どちらも値がちがう場合は何も表示しないので、実際に表示されるのは片方のhogeの値のみです。