如何在Magento的类别页面上按自定义属性过滤产品列表?

时间:2013-05-08 12:47:54

标签: magento magento-1.7

我在类别页面上制作了3个标签,分别是所有产品,在线产品和仅限商店产品。

所有产品均显示此类别下的所有产品。

我用

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

完成这项工作。

在线产品将显示自定义属性(product_type)等于“在线产品”

仅限商店产品将显示自定义属性(product_type)等于“仅商店产品”

如何创建一个块以在此类别下显示在线产品和仅限商店产品?

2 个答案:

答案 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。