【发布时间】:2012-11-20 09:52:52
【问题描述】:
我正在向目录列表中的排序方法添加日期。如果我选择按日期排序,则列表按日期排序 - 这很好用。
但是,我应该怎么做才能在目录列表中设置默认的按日期排序(DESC)?
就我而言,不使用这些解决方案:
目录.xml
<action method="setDefaultDirection"><dir>desc</dir></action>
<action method="setDefaultOrder"><field>created_at</field></action>
和:
目录/块/产品/列表/Toolbar.php
protected $_direction = 'desc';
Magento 版本:1.7.0.2。
编辑:1
我在本地文件夹 /app/code/local/SortByDate/ 中创建了一个新模块。我添加了两个文件。首先是/catalog/model/Config.php:
class SortByDate_Catalog_Model_Config extends Mage_Catalog_Model_Config {
public function getAttributeUsedForSortByArray()
{
$options = parent::getAttributeUsedForSortByArray();
if (!isset($options['created_at'])) {
$options['created_at'] = Mage::helper('catalog')->__('Date');
}
return $options;
}
}
第二个 /etc/config.xml :
<config><global><models><catalog><rewrite><config>SortByDate_Catalog_Model_Config</config></rewrite></catalog></models></global></config>
编辑 2 - 已解决 我修改了这个函数,问题就消失了:)
public function setDefaultOrder($field)
{
//set default order by date
if (isset($this->_availableOrder[$field])) {
$this->_availableOrder = array(
'created_at' => $this->__('Date'),
'name' => $this->__('Name'),
'price' => $this->__('Price'),
);
$this->_orderField = $field;
}
return $this;
}
【问题讨论】:
-
您究竟是如何将日期添加到目录列表中的排序方法中的?
created_at不是 EAV 属性,所以我猜你没有通过后端执行此操作。请在您的问题中提供更多详细信息。 -
我为您添加了“编辑:1”段落。你能检查一下吗?
-
顺便说一句,在 StackOverflow (S.O.) 上,当您发现独立于 S.O. 的问题的答案时,这是一个受鼓励的工作流程。是回答它并接受你自己的答案。它不仅让人们有机会因您的好问题和答案而奖励您,它还使问题对未来的人更加明显,并鼓励其他人发布解决方案。
标签: magento magento-1.7