Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法让Prestashop';s Layared筛选器模块是否使用查询参数而不是锚(哈希)?_Prestashop_Prestashop 1.6_Pushstate_Html5 History - Fatal编程技术网

有没有办法让Prestashop';s Layared筛选器模块是否使用查询参数而不是锚(哈希)?

有没有办法让Prestashop';s Layared筛选器模块是否使用查询参数而不是锚(哈希)?,prestashop,prestashop-1.6,pushstate,html5-history,Prestashop,Prestashop 1.6,Pushstate,Html5 History,有没有办法让standart PrestaShop的分层过滤器模块使用URL参数而不是锚(散列后的部分)? 我希望分层过滤器生成并接受如下URL(或者可能不同,但关键是使用参数,而不是使用散列): 与此相反: my-example-shop.ru/some-category#/color-red/size-xl 原因是大多数广告系统都可以在URL中添加一些参数,但它们通常会将其直接添加到URL的末尾,而不会尝试分析URL结构并将参数插入正确的位置 所以,在我看来,最明显的解决方案是避免在url

有没有办法让standart PrestaShop的分层过滤器模块使用URL参数而不是锚(散列后的部分)? 我希望分层过滤器生成并接受如下URL(或者可能不同,但关键是使用参数,而不是使用散列):

与此相反:

my-example-shop.ru/some-category#/color-red/size-xl
原因是大多数广告系统都可以在URL中添加一些参数,但它们通常会将其直接添加到URL的末尾,而不会尝试分析URL结构并将参数插入正确的位置

所以,在我看来,最明显的解决方案是避免在url中使用哈希,只使用查询参数,并使用history.pushState更改url而不刷新整个页面。。。 这似乎是显而易见的,可用的,但我找不到任何现成的解决方案可以这样做,我甚至找不到关于某人是如何做到这一点的信息

因此,问题是:

  • 有现成的解决方案吗

  • 有什么方法可以让我自己达到这个目的吗

提前谢谢

UPD

目前我自己发现,这样的URL可以被接受:

my-example-shop.ru/some-category/color-red/size-xl
my-example-shop.ru/some-category?selected_filters=/color-red/size-xl
但是,任何过滤器的更改都会导致再次使用散列(好吧,散列过滤器值会覆盖通过selected_filters参数传递的值,因此后续导航只会忽略selected_filters)。换句话说,我只能清除条目URL,但我无法使URL为后续导航清除。

更改非常大。 您应该创建覆盖类/Dispatcher.php

对于过滤器,您应该编辑文件:blocklayered/blocklayered.php 查找函数:getSelectedFilters()


里面有两个foreach,您应该从需要的url“featured”字段中退出,并编译新的数组“$selected\u filters”

您必须为此进行定制。您可以遵循并修改prestashop dispatcher类
root/classes/Dispatcher.php
。Prestashop完整url系统由调度器控制。您可以更改默认路由的
layered_规则
。不幸的是,这还不够,因为分层过滤器的行为不仅仅是路由,而是解析和操作blocklayered.php和blocklayered.js中的URL,“#”方式似乎是深度硬编码的。。。
my-example-shop.ru/some-category/color-red/size-xl
my-example-shop.ru/some-category?selected_filters=/color-red/size-xl