Magento从简单产品获得可配置产品,即使禁用配置产品

2022-08-30 23:08:54

我需要从简单产品获取父可配置产品,即使父产品被标记为禁用也是如此。我还需要获取可配置产品的状态(已启用或已禁用)。

现在我得到的父产品是这样的:

$parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
if (isset($parentIds[0])) {
    $product = Mage::getModel('catalog/product')->load($parentIds[0]);
}

除非禁用了可配置产品,其中$parentIds数组为空,否则这可以完美地工作。即使可配置产品被禁用,我也需要获取它,并且还需要确定可配置产品是否已启用/禁用。

任何帮助将不胜感激!


答案 1

我已经做了一些挖掘,我似乎无法重现您的问题。

当我在禁用可配置的简单上调用getParentIdsByChild()时,我仍然会获得父产品ID。

$parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')
      ->getParentIdsByChild(14412);
var_dump($parentIds);

给我:

array(1) {
  [0]=>
  string(5) "14446"
}

14446 的状态为“已禁用”。我也尝试过它,因为它有库存和缺货。

查看资源文件上的实际函数

Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Type_Configurable::getParentIdsByChild()

我可以看到它在没有任何状态字段的表格中查找,因此如果产品链接存在,则应始终返回父ID。catalog_product_super_link


答案 2

推荐