4

我需要所有产品的定制产品集合。目前没有包含商店所有产品的类别(因为有 8000 种产品,我们无法将它们添加到一个额外的类别中)。

我需要的是在特定的 CMS 页面上显示所有产品的产品集合。到目前为止,我有一个带有块的 CMS 页面:

{{block type="catalog/product_list" template="catalog/product/list.phtml"}}

我创建了一个模块来覆盖“Mage_Catalog_Block_Product_List”

我相信我需要编辑的函数是“受保护的函数_getProductCollection()”

正如我们在块调用中看到的那样,没有指定类别。我需要的是在覆盖的 _getProductCollection 函数中返回商店中的所有产品。

有什么办法可以实现吗?

4

2 回答 2

14

您可以通过多种方式从商店获取产品列表。 试试这种方式:

<?php
$_productCollection = Mage::getModel('catalog/product')
                        ->getCollection()
                        ->addAttributeToSort('created_at', 'DESC')
                        ->addAttributeToSelect('*')
                        ->load();
foreach ($_productCollection as $_product){
   echo $_product->getId().'</br>';
   echo $_product->getName().'</br>';
   echo $_product->getProductUrl().'</br>';
   echo $_product->getPrice().'</br>';
}
?>
于 2014-11-07T06:39:25.270 回答
3

不要覆盖列表块,这将对真实的产品列表页面产生影响。

将文件复制到本地命名空间并重命名的简单方法:

从:

app/code/core/Mage/Catalog/Block/Product/List.php

至:

app/code/local/Mage/Catalog/Block/Product/Fulllist.php

然后,您可以使用新块而无需制作完整的模块,这意味着您的 List 块将可以正常工作,并且不会破坏您商店中的任何东西。

然后,您可以根据需要安全地修改:

/**
 * Retrieve loaded category collection
 *
 * @return Mage_Eav_Model_Entity_Collection_Abstract
 */
protected function _getProductCollection()
{
    $collection = Mage::getModel('catalog/product')->getCollection();

    // this now has all products in a collection, you can add filters as needed.

    //$collection
    //    ->addAttributeToSelect('*')
    //    ->addAttributeToFilter('attribute_name', array('eq' => 'value'))
    //    ->addAttributeToFilter('another_name', array('in' => array(1,3,4)))
    //;

    // Optionally filter as above..

    return $collection;
}

然后,您可以像这样使用新块:

{{block type="catalog/product_fulllist" template="catalog/product/list.phtml"}}
于 2013-02-26T14:04:39.797 回答