我在类别页面上制作了3个标签,分别是所有产品,在线产品和仅限商店产品。
所有产品均显示此类别下的所有产品。
我用
{{block type="catalog/product_list" template="catalog/product/list.phtml"}}
完成这项工作。
在线产品将显示自定义属性(product_type)等于“在线产品”
仅限商店产品将显示自定义属性(product_type)等于“仅商店产品”
如何创建一个块以在此类别下显示在线产品和仅限商店产品?
答案 0 :(得分:4)
最简单的方法是复制List块并添加所需的过滤器。
您可能需要在Magento管理区域中将您的属性修改为"在产品列表中显示"太
例如:
{{block type="catalog/product_list" template="catalog/product/list.phtml"}}
这将使用List块为您过滤集合,让我们复制一下:
app/code/core/Mage/Catalog/Block/Product/List.php
到
app/code/local/Mage/Catalog/Block/Product/Mylist.php
现在让我们修改Block以使用我们的自定义属性,这样的东西应该可以工作(未经测试)
Mylist.php
class Mage_Catalog_Block_Product_Mylist extends Mage_Catalog_Block_Product_List
{
/**
* Retrieve loaded category collection
*
* @return Mage_Eav_Model_Entity_Collection_Abstract
*/
protected function _getProductCollection()
{
$collection = parent::_getProductCollection();
$collection->addAttributeToSelect('my_attribute')
->addAttributeToFilter('my_attribute', array('eq' => '000001'))
;
return $collection;
}
}
现在您可以简单地使用新块:
{{block type="catalog/product_mylist" template="catalog/product/list.phtml"}}
答案 1 :(得分:0)
从不,但绝不可以创建或修改Magento CORE类。答案是实现您的模块,覆盖List块类并自定义方法_getProductCollection。