【问题标题】:Order product list by creation date按创建日期订购产品列表
【发布时间】: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


【解决方案1】:

解决了,我修改了这个函数,问题就解决了:)

    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;
    }

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,为了以干净的方式为我的所有网站修复它,我开发了一个可以解决问题的扩展程序。

    它是免费的,而且很容易安装和使用。免费下载吧。

    https://magento.mdnsolutions.com/extensions/mdn-sort-by-date.html

    干杯,

    雷纳托

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-03
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      相关资源
      最近更新 更多