将Magento新产品新.php更改为基于id而不是to&from date。



我想改变Magento核心文件New.php将新产品调用到一个块中的方式。

该文件位于应用程序/代码/核心/法师/目录/块/产品/新.php - 我已将此文件复制到本地目录以保护它免受更新。

感兴趣的内容是:

protected function _beforeToHtml()
    {
        $todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
        $collection = Mage::getResourceModel('catalog/product_collection');
        $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
        $collection = $this->_addProductAttributesAndPrices($collection)
            ->addStoreFilter()
            ->addAttributeToFilter('news_from_date', array('or'=> array(
                0 => array('date' => true, 'to' => $todayDate),
                1 => array('is' => new Zend_Db_Expr('null')))
            ), 'left')
            ->addAttributeToFilter('news_to_date', array('or'=> array(
                0 => array('date' => true, 'from' => $todayDate),
                1 => array('is' => new Zend_Db_Expr('null')))
            ), 'left')
            ->addAttributeToFilter(
                array(
                    array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
                    array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
                    )
              )
            ->addAttributeToSort('news_from_date', 'desc')
            ->setPageSize($this->getProductsCount())
            ->setCurPage(1)
        ;
        $this->setProductCollection($collection);
        return parent::_beforeToHtml();
    }

该文件的工作原理是从产品管理员中提取New Product FromNew Product To日期字段的可选字段。考虑到更新这些字段所需的目录和手动管理的大小,这很不方便。所以基本上我想更改功能以获取 MAX 产品 ID(即最新添加的产品)并在此之前运行到 100。这将列出商店中最新的 100 种产品。

我尝试过这样的东西,但没有用。

        $collection = $this->_addProductAttributesAndPrices($collection)
            ->addStoreFilter()
            ->addAttributeToFilter ('entity_id')
            ->addAttributeToSort('entity_id', 'desc')
            ->setPageSize($this->getProductsCount())
            ->setCurPage(1)
        ;
        $this->setProductCollection($collection);
        return parent::_beforeToHtml();
    }

这只是尝试根据产品 id (entity_id) 返回产品,但没有返回任何内容(它也没有给出任何 php 错误)。

尝试(删除 ->addAttributeToFilter ('entity_id')...在 v1.7 上测试)

....
$collection = $this->_addProductAttributesAndPrices($collection)
        ->addStoreFilter()
        ->addAttributeToSort('entity_id', 'desc')
        ->setPageSize($this->getProductsCount())
        ->setCurPage(1);
...

最新更新