テンプレートは一つだけで、ドキュメントの階層によってclassを変えたい……と思っていて参考にしたページがこちら。
しかし、if文はSmartyのようにテンプレート上で展開しないのがmodxなので、ドキュメントの階層を取ってきたところで、どう分岐させよう?と思ってしまった。
ifはスニペットでやっちゃうのね。
ということで、スニペット作成。こういうパターンは今作ってるサイトでいろいろと出そうだから、「0階層のときは””って入れる」みたいな使いまわしができるといいなぁと。
「leveldoc」という名前で。
「階層によって記述を変える場合(0,1,2まで)」という説明で作った。
<?php $id = $modx->documentIdentifier; $levelcount = count($modx->getParentIds($id)); $return = ""; if($levelcount == 0){ $return = $level0; }elseif($levelcount == 1){ $return = $level1; }else{ $return = $level2; } return $return; ?>
テンプレートの方の記述は
[[leveldoc?&level0=`階層の値が0のときに表示する文章` &level1=`階層の値が1のときに表示する文章` &level2=`階層の値が2のときに表示する文章" `]]
みたいに
これ、スニペットの中にスニペットが展開できるんですねー。
こんな感じに
[[Ditto?tpl=[[leveldoc?&level0=`categorynavi` &level1=`categorylist` &level2=`categorylist`]] &emptyText=`2`]]
できないかと思ったから、できてびっくりした。便利やー。
コメントを残す