自定义Shopware 6插件页面语言切换器消失及语言重置问题求助
问题详情
我开发的Shopware 6自定义插件在前端生成了新页面,但遇到两个异常:
- 导航到该插件页面时,头部的语言切换器消失,其他页面均正常显示
- 切换为英语语言后进入插件页面,系统会自动切回德语
已做排查
- 已清理缓存,排除缓存导致的问题
- 插件的Twig代码块中没有添加可能干扰头部的自定义JavaScript
- 确认Twig块未覆盖或破坏主布局结构
插件主Twig代码参考
{% block base_content %} <main class="content-main"> <h1>{{ configPluginName }}</h1> {% include '@RcCarPartScout/storefront/page/components/listing.html.twig' with {'partscoutfields' : partscoutfields} %} <hr> {% include '@RcCarPartScout/storefront/page/components/drawing.html.twig' with {'partscoutdrawings' : partscoutdrawings} %} {% include '@RcCarPartScout/storefront/page/components/explo.html.twig' with {'drawingsingle' : drawingsingle, 'drawingsinglecoords' : drawingsinglecoords} %} </main> {% endblock %}
排查方向与修复建议
检查路由的语言参数传递
确认插件页面的路由定义是否正确携带_locale参数。Shopware 6的多语言页面依赖该参数维持语言上下文,若路由未配置或控制器未正确处理,页面会默认回退到系统默认语言,同时语言切换器可能因上下文缺失不渲染。检查插件的routes.xml或路由注册代码,确保路由包含语言参数且控制器正确注入语言上下文。验证页面布局继承逻辑
确认插件页面模板是否正确继承Shopware基础布局@Storefront/storefront/base.html.twig,或通过控制器指定了正确的布局。若页面未继承基础布局,头部组件(包括语言切换器)的渲染逻辑会丢失,导致切换器不显示。检查语言切换器的渲染条件
查看Shopware默认语言切换器模板(@Storefront/storefront/layout/header/actions/language-switcher.html.twig),其渲染依赖page.header.languageSwitcher.languages|length > 1的条件。可在插件页面模板中临时添加{{ dump(page.header) }},检查languageSwitcher数据是否存在、语言列表是否为空。若数据缺失,需在插件控制器中调用HeaderPageLoader加载头部所需的语言数据,确保页面上下文完整。排查模板块的误覆盖
确认插件所有Twig文件未意外覆盖头部相关的系统默认块(比如layout_header_actions或language_switcher),这类误覆盖会直接导致语言切换器不渲染。
内容的提问来源于stack exchange,提问作者ollo182

