Shopware 6自定义分页组件:后续页面链接标题为空问题
解决Shopware 6自定义分页组件标题空白问题
问题原因
你当前依赖的page.header.navigation.active变量仅在分类首页(第一页)有效,分页页面(第二页及以后)的控制器上下文没有注入这个活跃导航实体,导致变量为空,标题无法渲染。
解决方案
换用通过currentNavigationId直接从导航仓库获取实体的方式,这种方式不依赖页面上下文,所有分页页面都能稳定拿到导航名称。
修改后的Twig代码
{% for page in 1..totalPages %} {# 直接将分页参数p传入seoUrl,自动生成正确的SEO链接 #} {% set seoUrl = seoUrl('frontend.navigation.page', { navigationId: currentNavigationId, p: page }) %} {% if currentNavigationId is defined %} {# 通过导航仓库根据ID获取实体 #} {% set navigationEntity = services.repository('navigation').searchById(currentNavigationId, context) %} <a href="{{ seoUrl }}" title="{{ navigationEntity.translated.name }}">{{ page }}</a> {% endif %} {% endfor %}
关键说明
- 避免手动拼接URL参数:
seoUrl函数会自动处理参数编码和SEO路由生成,直接将分页参数p传入第二个参数即可,无需手动拼接?和编码。 - 仓库获取实体的可靠性:
services.repository('navigation')是Shopware模板中内置的仓库服务,通过searchById方法配合context(前端模板默认可用),能稳定获取到对应导航的翻译名称,不受分页页面影响。 - 参数传递验证:确保
currentNavigationId在所有分页页面都能正确传递,这个变量通常由Shopware的路由自动注入,无需额外处理。
内容的提问来源于stack exchange,提问作者mlodhi
相关产品推荐
相关产品推荐

