Php 在产品网格Magento中隐藏特定类别的产品

Php 在产品网格Magento中隐藏特定类别的产品,php,magento,Php,Magento,我正在创建一个网站,销售定制礼品篮。我创建了一个模块,每当用户创建一个新的礼品篮时,该模块就会自动创建一个新的可配置产品。在将礼品篮添加到购物车之前,模块将产品分配到“客户生成”类别 我现在的困境是如何防止“客户生成”类别的产品显示在产品网格上。我已经开始使用一个修改_prepareCollection()函数的模块,但我不太明白如何从一个特定类别中隐藏产品。假设这些新产品具有特定属性(例如sku),您可以将其过滤掉。假设所有定制产品的sku都以“custom_conf_”开头,那么您可以在_p

我正在创建一个网站,销售定制礼品篮。我创建了一个模块,每当用户创建一个新的礼品篮时,该模块就会自动创建一个新的可配置产品。在将礼品篮添加到购物车之前,模块将产品分配到“客户生成”类别


我现在的困境是如何防止“客户生成”类别的产品显示在产品网格上。我已经开始使用一个修改_prepareCollection()函数的模块,但我不太明白如何从一个特定类别中隐藏产品。

假设这些新产品具有特定属性(例如sku),您可以将其过滤掉。假设所有定制产品的sku都以“custom_conf_”开头,那么您可以在_prepareCollection函数中对您的集合应用过滤器,如下所示:

$collection->addAttributeToFilter('sku', array('nlike' => 'custom_conf_%'));

您可以使用与其他产品不同的任何属性应用过滤器。

其工作方式是,已经有使用固定SKU创建的默认产品(礼品篮),这些默认产品成为自定义创建礼品篮的基础。动态创建的产品的SKU是默认产品SKU+哈希的组合,因此建议的方法也会将默认产品与自定义创建的产品一起隐藏。我不建议使用SKU。这只是一个例子。如果您无法确定哪些是自定义创建的产品,哪些是原始产品,我建议您创建一个新的“是/否”属性(例如“is_custom”),将其添加到集合中,并在生成自定义产品时将其标记为是,如$product->setIsCustom(1)。现在,您将有一种方法来识别这些产品并像下面这样过滤集合$collection->addAttributeToFilter('is_custom',array('eq'=>1));我试着用这种方法,效果很好。我不必为定制产品加载类别。谢谢你的帮助。