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