Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento 如何从已禁用的分组产品中查找关联产品?_Magento_Magento 1.7 - Fatal编程技术网

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语句,禁用的产品也会出现在前端?我是说作为分组产品的一部分?或者这与前端无关?它与前端有关。这是返回关联产品的常规方法,所以希望禁用的产品在分组产品页面上可见。