3

カート ページで、子 SKU を使用して親 SKU を取得できる必要があります。

私は、Magento フォーラムと StackOverflow に関する同様の質問の両方から抜粋したいくつかのコードを試しましたが、成功しませんでした。

getTypeId() を使用して、製品が親のない単純な製品であるかどうかを判断することはできますが、その後、何を試しても親 SKU を取得できません。

マジェントのバージョン: 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 に答える