You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MODX Evolution的DLmenu中添加自定义锚点链接

MODX Evolution DLmenu 新增自定义锚点菜单实现方法

不用搞复杂的筛选器配置,直接在DLmenu绑定的菜单模板上改就行,是成本最低的实现方式。

具体操作步骤

  • 先找到你调用DLmenu时&tpl参数绑定的菜单项模板Chunk,常见命名比如dlmenu_item、main_menu_item这类,就是控制单个菜单项输出代码的块。
  • DLmenu循环输出菜单项的时候自带从1开始计数的迭代变量,直接在单个菜单项的输出代码后面加个位置判断,就能在指定位置插入自定义内容,不用改Snippet核心、也不用加额外钩子。
  • 参考修改代码:
<!-- 保留原有菜单项的输出逻辑,不要动 -->
<li[+wf.classes+]>
  <a href="[+wf.link+]" [+wf.attributes+]>[+wf.linktext+]</a>
  [+wf.wrapper+]
</li>
<!-- 在原有代码后面追加判断,第2个菜单项输出完就插入自定义锚点 -->
[+if:eq=`[+wf.iteration+]`:is=`2`:then=`
<li class="menu-item">
  <a href="[(site_url)]#top">返回首页顶部</a>
</li>
`+]
  • 几个注意点:
    • 要是你用的DLmenu版本比较新,[+wf.iteration+]不生效的话,换成[+dl.iteration+]就行,逻辑完全一样
    • [(site_url)]是MODX Evolution自带的系统标签,自动输出站点首页地址,后面的#top换成你实际用的首页锚点ID就可以
    • 自定义li标签的class名照着现有菜单项的类名写,就能直接复用原有导航的样式,不用额外调CSS

关于筛选器实现的说明

确实也可以通过DLmenu的&filters参数写自定义筛选逻辑插入虚拟链接,但这种方式需要额外写PHP钩子匹配插入位置,后续要是调整菜单排序、增减菜单项,维护起来比模板判断麻烦很多,没有特殊需求完全没必要用。


内容的提问来源于stack exchange,提问作者Alexey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 11:39:38