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