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

ExpressionEngine关联字段导航未生成链接问题排查求助

ExpressionEngine 7.5.18 导航菜单关联字段URL填充问题

我正在将导航菜单迁移至ExpressionEngine 7.5.18,关联字段无法正确填充URL。导航结构可正常渲染,但下拉菜单中的链接及子链接未加载对应数据。

问题

  1. 我访问关联字段数据的语法是否正确?
  2. 是否需要在{exp:channel:entries}标签中启用特定参数以支持关联字段?
  3. 在父循环中输出多个关联条目是否应采用其他实现方式?

频道设置

我创建了main_nav频道,包含以下字段:

  • title(文本类型)
  • url_title(自动生成)
  • offsite_link(文本类型,用于外部URL)
  • nav_url(关联字段,关联至页面条目)
  • dropdown(开关类型,Y/N)
  • direction(下拉菜单类型,用于CSS类)
  • child_links(关联字段,关联至多个页面条目)
  • menu_order(数字类型,用于排序)

当前代码

{exp:channel:entries channel="main_nav" orderby="menu_order" sort="asc" dynamic="no"}
    <div class="nav-item-wrapper">
        <a class="nav-link-main" 
           href="{if offsite_link}{offsite_link}{if:elseif nav_url}{nav_url}{nav_url:url_title}{/nav_url}{if:else}#{/if}"
           {if dropdown}id="nav{entry_id}"{/if}>
            {title}
        </a>
        
        {if dropdown}
        <div class="mega-dropdown {direction}">
            <div class="mega-dropdown-content">
                <div class="mega-dropdown-title">
                    <a href="{if offsite_link}{offsite_link}{if:elseif nav_url}{nav_url}/{nav_url:url_title}/{/nav_url}{if:else}#{/if}">
                        {title}
                    </a>
                </div>
                <div class="mega-dropdown-links">
                    {child_links}
                        <a href="/{child_links:url_title}">
                            {child_links:title}
                        </a>
                    {/child_links}
                </div>
            </div>
        </div>
        {/if}
    </div>
{/exp:channel:entries}

当前输出

<div class="nav-menu d-none d-lg-flex">
    <div class="nav-item-wrapper">
        <a class="nav-link-main" href="#" id="nav16">
            About Us
        </a>
        <div class="mega-dropdown ">
            <div class="mega-dropdown-content">
                <div class="mega-dropdown-title">
                    <a href="#">
                        About Us
                    </a>
                </div>
                <div class="mega-dropdown-links">
                    
                    {child_links}
                        <a href="/{child_links:url_title}">
                            {child_links:title}
                        </a>
                    {/child_links}
                </div>
            </div>
        </div>
    </div>            
</div>

解决方案

1. 关联字段访问语法修正

你当前访问单关联字段的语法有误,正确格式应为{字段名:关联字段的字段名},不需要嵌套标签:

  • 单关联字段nav_url获取URL标题的正确写法是{nav_url:url_title},而非{nav_url}{nav_url:url_title}{/nav_url}
  • 多关联字段child_links的循环写法是正确的,问题出在未启用关联字段加载参数导致标签未被解析

2. 启用关联字段支持参数

必须在{exp:channel:entries}标签中添加related_entries="yes"参数,才能加载关联字段的数据。如果是多站点环境,可额外添加related_site="all"支持跨站点关联。修改后的标签:

{exp:channel:entries channel="main_nav" orderby="menu_order" sort="asc" dynamic="no" related_entries="yes"}

3. 多关联条目输出方式

你当前的child_links循环写法没问题,只要确保后台已正确关联条目,且添加了related_entries="yes"参数即可。如果需要更复杂的多关联处理,可考虑{exp:relationships}标签,但当前场景用现有写法足够。

修正后的完整代码

{exp:channel:entries channel="main_nav" orderby="menu_order" sort="asc" dynamic="no" related_entries="yes"}
    <div class="nav-item-wrapper">
        <a class="nav-link-main" 
           href="{if offsite_link}{offsite_link}{if:elseif nav_url}/{nav_url:url_title}{if:else}#{/if}"
           {if dropdown}id="nav{entry_id}"{/if}>
            {title}
        </a>
        
        {if dropdown}
        <div class="mega-dropdown {direction}">
            <div class="mega-dropdown-content">
                <div class="mega-dropdown-title">
                    <a href="{if offsite_link}{offsite_link}{if:elseif nav_url}/{nav_url:url_title}{if:else}#{/if}">
                        {title}
                    </a>
                </div>
                <div class="mega-dropdown-links">
                    {child_links}
                        <a href="/{child_links:url_title}">
                            {child_links:title}
                        </a>
                    {/child_links}
                </div>
            </div>
        </div>
        {/if}
    </div>
{/exp:channel:entries}

额外检查点

  • 确认nav_url和child_links字段在后台已正确关联到对应页面条目
  • 检查关联的页面条目是否已发布(未发布条目不会被加载)
  • 若使用URL路由规则,确保url_title对应的路径配置正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 14:52:43