3

在购物车页面上,我需要能够使用子 SKU 获取父 SKU。

我已经尝试了从 Magento 论坛和 StackOverflow 上的类似问题中截取的几个代码,但没有成功。

我可以通过使用 getTypeId() 来确定产品是否只是没有父级的简单产品,但之后我尝试的所有操作都无法获取父级 SKU。

Magento 版本:1.4.2.0

4

1 回答 1

13

查看 Mage_Catalog_Model_Product_Type_Configurable 和 Mage_Bundle_Model_Product_Type 类。他们有获取父子产品的有用方法。你想要getParentIdsByChild():

对于可配置产品:

$parent_ids = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($childId);

对于捆绑产品:

$parent_ids = Mage::getModel('bundle/product_type')->getParentIdsByChild($childId);

这些仅适用于 id。您需要将子 SKU 转换为 id,然后将父 ID 转换回 SKU。从 SKU 获取 id 的简单方法是:

Mage::getModel('catalog/product')->getIdBySku($sku);

此外,您可以有多个父 ID,因此您必须注意这一点。这是一个例子:

$child_id = Mage::getModel('catalog/product')->getIdBySku($child_sku);
$parent_ids = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($child_id);
$parent_collection = Mage::getResourceModel('catalog/product_collection')
    ->addFieldToFilter('entity_id', array('in'=>$parent_ids))
    ->addAttributeToSelect('sku');
$parent_skus = $parent_collection->getColumnValues('sku');
于 2012-07-14T04:46:29.540 回答