it-swarm.com.de

Wie bekomme ich eine Elternprodukt-ID in Magento?

Ich weiß, dass man in Magento 1.4.2.0 die ID der Eltern so bekommt

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

Meine Frage ist: Wenn ich nicht weiß, was das übergeordnete Element ist, woher weiß ich, wie ich das Modell 'catalog/product_type _ configureable ' vs 'catalog/product_type _ grouped ' verwenden kann, um die ID zu erhalten?

22
veilig

Sie können verwenden:

$product->getTypeInstance();

Das gibt das Typobjekt Ihres Produkts zurück

Dann können Sie Folgendes durchführen:

->getParentIdsByChild()

Endlich geben:

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

Sie können einfach beide anrufen und einen Rückfall anbieten, wie es der eine oder der andere sein sollte:

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

Hier ist eine andere Lösung für Magento 1.7.2

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

wir können in der Blockdatei, Magento 2 verwenden,

 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

Sie können den Typ des Produkts mit $_product->getTypeId(); überprüfen. Wenn dies als 'konfigurierbar' zurückgegeben wird, nehmen Sie das konfigurierbare Modell und, wenn es 'gruppiert' zurückgibt, das gruppierte Modell.

Hoffe das hilft.

0
Simon