2011-12-23 131 views
3

我之前没有注意到的一点是,Magento会记住您已选择在分类列表页面上选择'排序方式'。因此,如果您转到类别页面,并假设默认排序按价格排序,那么如果将排序更改为按名称排序,则页面会重新加载,并且一切正常。Magento'排序方式' - 如何让Magento忘记选择了哪个选项

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

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

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

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

+0

有这样的问题(一个更详细的解答):http://magento.stackexchange.com/问题/ 15455/how-to-make-products-per-page-setting-reset-to-default-on-pageload – Eric

回答

5

排序顺序参数存储在会话中。见Mage_Catalog_Block_Product_List_Toolbar::getCurrentOrder方法。您可以通过调用Mage_Catalog_Block_Product_List_Toolbar::disableParamsMemorizing方法或在目录会话中设置params_memorize_allowed将其关闭。我的意思是Mage::getSingleton('catalog/session')->setParamsMemorizeAllowed(true)

+3

这最好在你的'local.xml'中执行: '' –

+0

我有自定义页面的产品列表自定义块..我试图使用两种方式..但都没有为我工作.. 如果($ block = $ this-> getLayout() - > getBlock($ blockName)),我也重写了'getToolbarBlock()'函数并添加了'$ block-> disableParamsMemorizing();'' '..我错过了什么......? – Chaitanya

1

什么工作对我来说是local.xml添加此:在Magento的Stackexchange

<!-- 
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> 
相关问题