在购物车页面上,我需要能够使用子 SKU 获取父 SKU。
我已经尝试了从 Magento 论坛和 StackOverflow 上的类似问题中截取的几个代码,但没有成功。
我可以通过使用 getTypeId() 来确定产品是否只是没有父级的简单产品,但之后我尝试的所有操作都无法获取父级 SKU。
Magento 版本:1.4.2.0
在购物车页面上,我需要能够使用子 SKU 获取父 SKU。
我已经尝试了从 Magento 论坛和 StackOverflow 上的类似问题中截取的几个代码,但没有成功。
我可以通过使用 getTypeId() 来确定产品是否只是没有父级的简单产品,但之后我尝试的所有操作都无法获取父级 SKU。
Magento 版本:1.4.2.0
查看 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');