Shopware 6 SEO友好分页插件:app.request.get('properties')返回null求助
问题排查与修复方案
原因分析
Shopware 6 中,属性筛选的properties参数不会直接暴露在app.request的顶层查询参数里。因为筛选参数会经过Shopware搜索逻辑处理,最终封装到分页组件的routeParameters上下文中,而非以原始query参数形式直接通过app.request.get()获取。
修复方案
在你的pagination.html.twig模板里,别直接从app.request取参数,而是通过分页对象的routeParameters获取包含筛选、排序的所有上下文参数:
1. 生成完整SEO友好分页URL
如果要生成包含当前所有筛选、排序规则的分页URL,直接复用page.routeParameters即可,示例代码:
{% for pageItem in page.items %} <a href="{{ path('frontend.product.listing.page', page.routeParameters|merge({'p': pageItem.page})) }}" style="display:none;">Page {{ pageItem.page }}</a> {% endfor %}
page.routeParameters已经包含了properties、order等所有当前页面的筛选排序参数,合并分页页码后就能生成符合SEO规范的URL。
2. 单独提取properties参数
如果需要单独获取properties参数,直接从routeParameters中读取:
{% set properties = page.routeParameters.properties ?? null %} {# 后续可直接使用properties变量 #}
关于properties参数获取的疑问
完全可以像获取order参数一样获取properties,但必须通过分页对象的routeParameters上下文,而非app.request。Shopware渲染分页组件时,已经把当前页面的所有筛选、排序参数注入到page.routeParameters中,这个集合是专门用于生成分页相关URL的标准化参数集合。
内容的提问来源于stack exchange,提问作者mlodhi
相关产品推荐
相关产品推荐

