web-dev-qa-db-ja.com

magentoで親製品IDを取得するにはどうすればよいですか?

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を取得するには?

22
veilig

次のものを使用できます。

$product->getTypeInstance();

あなたの製品のタイプオブジェクトを返すでしょう

次に、以下を実行できます。

->getParentIdsByChild()

最後に与える:

$product->getTypeInstance()->getParentIdsByChild($child->getId());
9
eric ramahatra

どちらか一方を呼び出すだけで、フォールバックを提供できます。

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
    }
}
35
Kus

ここにmagento 1.7.2の別の解決策があります

$parentIds = Mage::getSingleton('catalog/product_type_configurable')->getParentIdsByChild($mageProduct->getId());
7
lavb

ブロックファイル、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;     
        }   
1
Rakesh Jesadiya

$_product->getTypeId();を使用して製品のタイプを確認し、これが「構成可能」を返す場合は構成可能モデルを取り、「グループ化」を返す場合はグループ化モデルを取ります。

お役に立てれば。

0
Simon