2011-08-10 1 views
22

Tôi biết rằng trong Magento 1.4.2.0 ai được id cha mẹ như vậyLàm cách nào để có được id sản phẩm gốc trong Magento?

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

Câu hỏi của tôi là: nếu tôi không biết những gì phụ huynh là, làm thế nào mà tôi biết để sử dụng 'Danh mục hàng/product_type_ cấu hình 'vs' catalogue/product_type_ được nhóm 'mô hình để lấy id?

+0

+1 cho mã dán để có được id mẹ ... – balanv

Trả lời

8

Bạn có thể sử dụng:

$product->getTypeInstance(); 

Mà sẽ trả lại đối tượng loại sản phẩm của bạn

Sau đó, bạn có thể thực hiện của bạn:

->getParentIdsByChild() 

Giving cuối cùng:

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

Làm cách nào để hoạt động? $ product-> getTypeInstance() sẽ trả về cá thể sản phẩm đơn giản. Tuy nhiên chúng tôi không biết loại sản phẩm chính là gì. –

0

Bạn có thể kiểm tra loại sản phẩm với $_product->getTypeId(); và nếu điều này trả về 'có thể định cấu hình', hãy lấy mô hình có thể định cấu hình và nếu nó trả về 'được nhóm' lấy mô hình được nhóm.

Hy vọng điều này sẽ hữu ích.

+2

không chắc chắn nó :( nếu bạn có một sản phẩm đơn giản và cố gắng để có được mẹ của nó (nhóm hoặc config) phương pháp getTypeId sẽ chỉ trả về 'đơn giản' ... và bạn vẫn không biết liệu mình có cần sử dụng cấu hình hoặc mô hình được nhóm hay không. – veilig

+0

Tôi xin lỗi, bạn hoàn toàn đúng. Vì vậy, tôi không biết bất cứ điều gì tốt hơn so với sử dụng cả hai, mô hình cấu hình và nhóm lại và sau đó hợp nhất các kết quả. Bạn cũng có thể kiểm tra xem cái nào trả về một mảng trống và bỏ qua mảng này. – Simon

+0

làm cách nào để bạn "lấy mô hình có thể định cấu hình"? – ahnbizcad

27

Bạn chỉ có thể gọi cả hai và đưa ra một mùa thu trở lại như nó phải được cái này hay cái khác:

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

Chỉ cần một lưu ý cho những người khác, tùy thuộc vào danh mục của bạn, bạn có thể muốn kiểm tra các sản phẩm cấu hình đầu tiên nếu chúng xảy ra thường xuyên hơn. – KTastrophy

+7

Bạn có thể sử dụng hằng số Mage_Catalog_Model_Product_Type :: TYPE_SIMPLE thay vì "đơn giản". –

4

Dưới đây là một giải pháp cho magento 1.7.2

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

chúng ta có thể sử dụng trong tập tin khối, 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;  
     }