Magento'Sorted By' - 如何让Magento忘记选择了哪个选项

时间:2011-12-23 22:43:17

标签: sorting magento

之前我没有注意到的是,Magento会记住您在类别列表页面上选择了哪个选项'排序依据'。因此,如果您转到类别页面,并且假设默认排序是按价格排序的,那么如果您更改要按名称排序的排序,则页面会重新加载,一切都很顺利。

但是,如果删除URL中的get变量并重新加载页面,它仍会按名称排序,而不是恢复到价格。

我认为这是我正在处理的网站特有的问题,因为有一些自定义的事情发生在收集构建和排序等等,但我现在已经检查了一些其他Magento网站(一些这是我在网上随机发现的)他们都做同样的事情。

有谁知道这是怎么被'记住'的?这是存储在用户的会话中吗?我认为它是缓存的一部分,但是这个站点仍在开发中,因此禁用了缓存。

这不是什么大不了的事,但它确实看起来像个错误。

2 个答案:

答案 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>