2011-08-10 11 views
22

私はMagentoの中に1がそうマゼンタで親製品IDを取得するには?

list($parentId) = Mage::getModel('catalog/product_type_configurable') 
          ->getParentIdsByChild($product->getId()); 

私の質問があるように、親IDを取得1.4.2.0ことを知っている:私は親が何であるかわからない場合は、どのように私は、「カタログ/ product_type_ を使用することを知っています設定可能 '対'カタログ/ product_type_ グループ化 'のIDを取得するには?

+0

+1親IDを取得するには... – balanv

答えて

8

あなたは使用することができます:

その後、あなたはを実行することができ、製品

のタイプのオブジェクトを返します

$product->getTypeInstance(); 

最後に与える
->getParentIdsByChild() 

$product->getTypeInstance()->getParentIdsByChild($child->getId()); 
+3

これはどのように機能するのですか? $ product-> getTypeInstance()は、単純な製品インスタンスを返します。それでも、親製品であるタイプはわかりません。 –

0

$_product->getTypeId();で製品のタイプを確認し、「設定可能」を返す場合は設定可能なモデルを使用し、「グループ化」を返す場合はグループ化されたモデルを使用します。

これが役に立ちます。

+2

ないあなたは、単純な製品を持っているとその親(グループ化されたまたは設定)を取得しようとした場合、それは:( をしてくださいgetTypeId方法「シンプル」だけを返します...あなたはconfigかgroupedモデルを使用する必要があるかどうかまだ分かりません。 – veilig

+0

申し訳ありませんが、あなたは絶対に正しいです。ですから、私は設定可能でグループ化されたモデルを使用し、結果をマージするよりも良いことは何も知らないのです。どの配列が空の配列を返しているのかを確認し、これを無視することもできます。 – Simon

+0

「設定可能なモデルをどうやって使うのですか? – ahnbizcad

27

それはどちらか一方でなければなりませんようの両方を呼び出し、フォールバックを提供します。

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 
    } 
} 
+4

あなたのカタログによっては、構成可能な製品が頻繁に出現した場合は、その製品を最初にチェックしたいかもしれません。 – KTastrophy

+7

"simple"ではなくMage_Catalog_Model_Product_Type :: TYPE_SIMPLE定数を使用できます。 –

4

ここでMagentoの1.7.2私たちは、ブロックファイルで使用できる

$parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($mageProduct->getId()); 
1

のための別の解決策、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;  
     } 
関連する問題