WEBサイト作成時に発生するエラーやトラブル対応の備忘録を中心に、いろいろと書いております。


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

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

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

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

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

コメントを残す

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

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください