Magento 1.4.2.0では親IDが次のようになることを知っています
list( $parentId ) = Mage::getModel('catalog/product_type_configurable')
->getParentIdsByChild( $product->getId() );
私の質問は、親が何であるかわからない場合、「catalog/product_type _configurable」モデルと「catalog/product_type _grouped」モデルの使い方を知るにはどうすればよいですか。 IDを取得するには?
次のものを使用できます。
$product->getTypeInstance();
あなたの製品のタイプオブジェクトを返すでしょう
次に、以下を実行できます。
->getParentIdsByChild()
最後に与える:
$product->getTypeInstance()->getParentIdsByChild($child->getId());
どちらか一方を呼び出すだけで、フォールバックを提供できます。
if($product->getTypeId() == "simple"){
$parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($product->getId());
if(!$parentIds)
$parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
if(isset($parentIds[0])){
$parent = Mage::getModel('catalog/product')->load($parentIds[0]);
// do stuff here
}
}
ここにmagento 1.7.2の別の解決策があります
$parentIds = Mage::getSingleton('catalog/product_type_configurable')->getParentIdsByChild($mageProduct->getId());
ブロックファイル、magento 2で使用できます。
protected $_catalogProductTypeConfigurable;
public function __construct(
\Magento\Catalog\Block\Product\Context $context,
//for getting parent id of simple
\Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable $catalogProductTypeConfigurable,
array $data = []
) {
//for getting parent id of simple
$this->_catalogProductTypeConfigurable = $catalogProductTypeConfigurable;
parent::__construct($context, $data);
}
public function getProductData($id){
$parentByChild = $this->_catalogProductTypeConfigurable->getParentIdsByChild($id);
if(isset($parentByChild[0])){
//set id as parent product id...
$id = $parentByChild[0];
}
return $id;
}
$_product->getTypeId();
を使用して製品のタイプを確認し、これが「構成可能」を返す場合は構成可能モデルを取り、「グループ化」を返す場合はグループ化モデルを取ります。
お役に立てれば。