![](/img/trans.png)
[英]Pagination in modx revolution with different page limits for different pages
[英]modx revolution pdomenu different templates for each level
如果我想在网页上创建多级菜单,我想知道如何为pdoMenu参数中的每个级别定义模板?
例如,菜单的结构是这样的:
<ul>
<li>
<div></div>
<img src="assets/img/1.png" />
<a>Link 1</a>
<ul>
<li>
<a>Sub link 1</a>
</li>
<li>
<a>Sub link 2</a>
</li>
</ul>
</li>
<li>
<div></div>
<img src="assets/img/2.png" />
<a>Link 2</a>
<ul>
<li>
<a>Sub link 1</a>
</li>
<li>
<a>Sub link 2</a>
</li>
</ul>
</li>
</ul>
如您所见,菜单的第一级包括div和img标签,而第二级则没有。 这就是为什么我需要通过pdoMenu定义不同的模板的原因。 不幸的是,没有关于pdoMenu参数的完整示例。 似乎pdoMenu仅为“&levelClass”参数提供此功能,该参数为每个级别的css类提供增量。
我是否可以为此目的使用其他方法? Pdoresources或getresources?
Wayfinder确实有一些菜单模板选项可供您探索: https : //docs.modx.com/extras/evo/wayfinder#Wayfinder-TemplateParameters
但是,暂时,我唯一想到的方法是使用getResources。
对于第一个级别,您将使用一个简单的getResources调用,将其限制为1级深度,但是在该.tpl中,您将拥有第二个getResources调用。
例如:
[[!getResources?
&parents=`1`
&depth=`1`
&tpl=`firstLevel`
]]
那么firstLevel
看起来像:
<li>
<a href="[[~[[+id]]]]">[[+pagetitle]]</a>
[[!getResources?
&parents=`[[~[[+id]]]]`
&depth=`0`
&tplWrapper=`menuWrapper`
&tpl=`secondLevel`
]]
</li>
menuWrapper
只会包装secondLevel
,如下所示:
<ul>[[+output]]</ul>
secondLevel
看起来像:
<li>
<a href="[[~[[+id]]]]">[[+pagetitle]]</a>
</li>
这是解决问题的一种方法。 上面的内容未经测试,因此您可能要记住这一点。
附带说明一下,如果只想添加图像,则可以使用css,例如:
li ul li:first-child:before {
content: url('../images/image.png');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.