繁体   English   中英

Modx Revolution Pdomenu每个级别都有不同的模板

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM