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

Drupal 9菜单添加额外字段后无法在Twig模板输出问题求助

解决Drupal 9 Menu item extras字段在menu.html.twig中无法输出的问题

1. 确认字段配置与数据存储

  • 检查Menu item extras模块中,你添加的「图标」「描述文本」等字段是否已关联到目标菜单(比如主菜单)对应的菜单类型,且在菜单项编辑页面能正常填写并保存字段值。
  • 确保字段的「显示设置」中,已开启对应字段的显示权限(进入菜单类型的显示管理页面,比如/admin/structure/menu/item_extras/manage/[menu-type]/display)。

2. 开启菜单树的实体字段加载

Menu item extras默认不会自动把自定义字段数据带入菜单渲染数组,需手动开启:

  • 进入路径 /admin/structure/menu/item_extras/settings
  • 找到「Menu tree integration」区域,勾选「Load entity fields for menu tree items」选项并保存。

3. 修改menu.html.twig模板输出字段

首先开启Twig调试(在settings.php中设置$settings['twig_debug'] = TRUE;),通过{{ dump(item) }}打印菜单项数组,定位自定义字段的存储位置,再针对性输出:

示例代码:

{# 输出描述文本字段(假设字段机器名为field_menu_desc) #}
{% if item.content['#menu_link_content'].field_menu_desc is not empty %}
  <span class="menu-item-description">{{ item.content['#menu_link_content'].field_menu_desc.value }}</span>
{% endif %}

{# 输出图片图标字段(假设字段机器名为field_menu_icon) #}
{% if item.content['#menu_link_content'].field_menu_icon is not empty %}
  <img 
    src="{{ file_url(item.content['#menu_link_content'].field_menu_icon.entity.uri.value) }}" 
    alt="{{ item.content['#menu_link_content'].field_menu_icon.alt }}" 
    class="menu-item-icon"
  >
{% endif %}

{# 输出SVG图标(假设字段为存储SVG代码的文本字段,机器名为field_menu_svg) #}
{% if item.content['#menu_link_content'].field_menu_svg is not empty %}
  <span class="menu-item-svg">{{ item.content['#menu_link_content'].field_menu_svg.value|raw }}</span>
{% endif %}

4. 清除缓存

修改模板或模块设置后,必须执行缓存清除(后台路径/admin/config/development/performance点击清除,或使用Drush命令drush cr),确保配置与模板生效。

5. 权限检查

确认当前访问用户拥有自定义字段的查看权限,避免因权限限制导致字段数据无法加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:00:32