我需要的所有产品定制产品集合。 目前有包含店铺的所有产品(因为有8000级的产品,我们不能在一个额外的类别添加的话)没有类别。
我需要的是一个特定的CMS页面显示所有产品的产品集合上。 到目前为止,我有与块CMS页面:
{{block type="catalog/product_list" template="catalog/product/list.phtml"}}
我已经创建了一个模块来重写“Mage_Catalog_Block_Product_List”
我相信我需要编辑功能将是'保护功能_getProductCollection()
正如我们可以在块调用那里有没有看到类别中指定。 我需要的是在overidden _getProductCollection功能是所有产品在店内返回。
有没有这种可以实现什么办法?
有几种方法,你可以从商店得到的产品清单。 试试这个方法:
<?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>';
}
?>
不要覆盖列表块,这将对真正的产品列表页面的效果。
最简单的方法来将文件复制到本地命名空间并重新命名为:
从:
app/code/core/Mage/Catalog/Block/Product/List.php
至:
app/code/local/Mage/Catalog/Block/Product/Fulllist.php
然后,您可以使用新的块,而无需进行完整的模块,这将意味着你的列表框将工作相同,您的商店不破坏任何东西。
您可以根据需要,然后安全地修改:
/**
* 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"}}