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

如何在Shopware Twig模板中将base_navigation移动到base_header块内

解决方案

你当前的写法出现重复导航的核心原因是:父模板中base_navigation块本身定义在base_header块之外,你仅在header内部新增了导航渲染,并没有关闭原位置的导航输出,因此会同时出现两个导航。

你可以通过以下写法实现需求:

{% sw_extends '@Storefront/storefront/base.html.twig' %}

{% block base_header %}
    <header>
        <div class="header-main">
            {% block base_header_inner %}
                {{ parent() }}
            {% endblock %}
        </div>

        <div class="nav-main">
            {# 调用父模板中base_navigation块的原始内容 #}
            {{ block('base_navigation', '@Storefront/storefront/base.html.twig') }}
        </div>
    </header>
{% endblock %}

{# 清空原位置的base_navigation块,避免重复渲染 #}
{% block base_navigation %}
{% endblock %}

上述写法的逻辑说明:

  • 重写base_header块时,通过block()方法直接读取父模板中base_navigation的原始内容,包裹在你要求的.nav-main容器内,保证结构符合预期
  • 单独重写根层级的base_navigation块,将其内容置空,关闭原位置的导航渲染,最终只会保留header内部的导航

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:39:03