如何在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
相关产品推荐
相关产品推荐

