1

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

所有产品显示该类别下的所有产品。

我用

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

做这项工作。

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

Store Only Products 将显示自定义属性 (product_type) 等于“Store Only Product”

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

4

2 回答 2

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 以使用我们的自定义属性,这样的东西应该可以工作(未经测试)

我的列表.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"}}
于 2013-05-09T07:56:37.490 回答
0

从不,但从不,创建或修改 Magento CORE 类。答案是实现您的模块,覆盖 List 块类并自定义方法 _getProductCollection。

于 2014-10-26T12:24:19.647 回答