我想做的事情似乎很简单......但我还是因为某种原因无法解决这个问题。
我想做的是 - 仅针对一个特定类别 - 通过Magento后端更改按属性和排序顺序排序。也就是说,我认为最好的办法是使用自定义布局更新XML。在互联网上广泛搜索之后,我无法为我的生活找到答案(我希望这方面的答案对他人也有帮助)。
很简单,我为一个特定类别尝试了以下自定义布局更新XML:
<reference name="product_list_toolbar">
<action method="setDefaultOrder"><string>created_at</string></action>
<action method="setDefaultDirection"><string>desc</string></action>
</reference>
它只是不起作用! (它在我的自定义主题和默认的RWD主题中都没有做任何事。)
我想做什么不可能?看起来很容易!
提前致谢。
注意:我使用的是Magento 1.9.1.1版本
答案 0 :(得分:2)
出于某种原因,自定义布局方法在Magento 1.9及更高版本中不起作用。这可能是因为Magento用<catalog_category_default>
中的local.xml
标签覆盖了它。我找到的唯一解决方案是打开你的主题local.xml,并插入以下内容;
<CATEGORY_24>
<reference name="product_list_toolbar">
<action method="setDefaultDirection"><string>desc</string></action>
</reference>
</CATEGORY_24>
其中<CATEGORY_24>
被类别ID替换。
答案 1 :(得分:2)
经过大量的反复试验后发现了这一点。
要更改排序顺序,我使用了Ricky的代码,并使用Magento后端将其添加为该类别的布局更新XML:
(类别&gt;自定义设计&gt;自定义布局更新)
<reference name="product_list_toolbar">
<action method="setDefaultDirection"><string>desc</string></action>
</reference>
要按项目添加排序,它需要扩展Mage_Catalog_Model_Config
类,如下所示:
(特别是重写函数getAttributeUsedForSortByArray()
)
public function getAttributeUsedForSortByArray()
{
$options = array(
'position' => Mage::helper('catalog')->__('Position'), // ADD TRAILING COMMA
// ADD ADDITIONAL ATTRIBUTES BELOW
'created_at' => Mage::helper('catalog')->__('Date')
);
foreach ($this->getAttributesUsedForSortBy() as $attribute) {
/* @var $attribute Mage_Eav_Model_Entity_Attribute_Abstract */
$options[$attribute->getAttributeCode()] = $attribute->getStoreLabel();
}
return $options;
}
答案 2 :(得分:1)
这对我有用:
<reference name="product_list">
<action method="setDefaultDirection"><string>desc</string></action>
<action method="setSortBy"><string>sku</string></action>
</reference>
<reference name="product_list_toolbar">
<action method="setDefaultDirection"><string>desc</string></action>
<action method="setSortBy"><string>sku</string></action>
<action method="setDefaultGridPerPage"><limit>260</limit></action>
<action method="setDefaultListPerPage"><limit>260</limit></action>
</reference>