Magento 如何从已禁用的分组产品中查找关联产品?
我正在尝试从一个分组的产品中获取关联的产品。我可以这样做,但不能用于禁用的产品。我尝试了一个解决方案,其中提到将:Magento 如何从已禁用的分组产品中查找关联产品?,magento,magento-1.7,Magento,Magento 1.7,我正在尝试从一个分组的产品中获取关联的产品。我可以这样做,但不能用于禁用的产品。我尝试了一个解决方案,其中提到将:使用平面目录产品设置为“否”,但我仍然不能。还有其他想法吗?我尝试加载一个集合并使用过滤器,比如启用或禁用IS_,以及加载模型,比如 $product = Mage::getModel('catalog/product')->load($id); $associatedProducts = $product->getTypeInstance(true)->getA
使用平面目录产品
设置为“否”,但我仍然不能。还有其他想法吗?我尝试加载一个集合并使用过滤器,比如启用或禁用IS_,以及加载模型,比如
$product = Mage::getModel('catalog/product')->load($id);
$associatedProducts = $product->getTypeInstance(true)->getAssociatedProducts($product);
还有其他想法吗?那么让我们看看
Mage\u Catalog\u Model\u Product\u Type\u group
类的getAssociatedProducts()
方法。以下是其中有趣的部分:
if (!Mage::app()->getStore()->isAdmin()) {
$this->setSaleableStatus($product);
}
$collection = $this->getAssociatedProductCollection($product)
->addAttributeToSelect('*')
->addFilterByRequiredOptions()
->setPositionOrder()
->addStoreFilter($this->getStoreFilter($product))
->addAttributeToFilter('status', array('in' => $this->getStatusFilters($product)));
如您所见,Magento将状态添加到集合筛选器。方法getStatusFilters()
返回要应用于过滤器的产品状态。如果查看此方法的主体,您会发现它基本上返回$product->getData($this->\u keyStatusFitlers)
此方法需要返回2个值(2个状态)。但事实并非如此。收集设置前的if
语句负责:
if (!Mage::app()->getStore()->isAdmin()) {
$this->setSaleableStatus($product);
}
此部件将仅在产品状态过滤器上设置启用
状态
如果要从分组产品中获取禁用的产品,请重写Mage\u Catalog\u Model\u product\u Type\u grouped
类,并删除If
语句和/或设置适当的过滤器
如果您不知道如何重写Magento类,请告诉我,然后我将扩展此答案。我检查了一些其他答案,如我在问题中提到的,但似乎没有任何效果。我将尝试一下!谢谢@Ventusa一个简短的问题。如果我重写Magento类并更改If语句,禁用的产品也会出现在前端?我是说作为分组产品的一部分?或者这与前端无关?它与前端有关。这是返回关联产品的常规方法,所以希望禁用的产品在分组产品页面上可见。