modx:ドキュメントの階層を調べる

テンプレートは一つだけで、ドキュメントの階層によってclassを変えたい……と思っていて参考にしたページがこちら。

【MODX】ドキュメントの階層(深さ)を得るスニペット

しかし、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`]]

できないかと思ったから、できてびっくりした。便利やー。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です