之前我没有注意到的是,Magento会记住您在类别列表页面上选择了哪个选项'排序依据'。因此,如果您转到类别页面,并且假设默认排序是按价格排序的,那么如果您更改要按名称排序的排序,则页面会重新加载,一切都很顺利。
但是,如果删除URL中的get变量并重新加载页面,它仍会按名称排序,而不是恢复到价格。
我认为这是我正在处理的网站特有的问题,因为有一些自定义的事情发生在收集构建和排序等等,但我现在已经检查了一些其他Magento网站(一些这是我在网上随机发现的)他们都做同样的事情。
有谁知道这是怎么被'记住'的?这是存储在用户的会话中吗?我认为它是缓存的一部分,但是这个站点仍在开发中,因此禁用了缓存。
这不是什么大不了的事,但它确实看起来像个错误。
答案 0 :(得分:5)
排序顺序参数存储在会话中。请参阅Mage_Catalog_Block_Product_List_Toolbar::getCurrentOrder
方法。您可以通过调用Mage_Catalog_Block_Product_List_Toolbar::disableParamsMemorizing
方法或在目录会话中设置params_memorize_allowed
来关闭它。我的意思是Mage::getSingleton('catalog/session')->setParamsMemorizeAllowed(true)
答案 1 :(得分:2)
对我有用的是在local.xml
中添加:
<!--
Category default layout
-->
<catalog_category_default translate="label">
<!-- Disable memorizing toolbar parameters -->
<reference name="content">
<reference name="product_list_toolbar">
<action method="disableParamsMemorizing" />
</reference>
</reference>
</catalog_category_default>
<!--
Category layered navigation layout
-->
<catalog_category_layered translate="label">
<!-- Disable memorizing toolbar parameters -->
<reference name="content">
<reference name="product_list_toolbar">
<action method="disableParamsMemorizing" />
</reference>
</reference>
</catalog_category_layered>