วิธีรับรหัสผลิตภัณฑ์หลักในวีโอไอพี

ฉันรู้ว่าใน Magento 1.4.2.0 เราจะได้รับรหัสผู้ปกครองเช่นนั้น

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

คำถามของฉันคือ: ถ้าฉันไม่รู้ว่าผู้ปกครองคืออะไร ฉันจะรู้ได้อย่างไรว่าจะใช้โมเดล 'แคตตาล็อก/product_type_กำหนดค่าได้' เทียบกับ 'แคตตาล็อก/ผลิตภัณฑ์_ประเภท_จัดกลุ่ม' เพื่อรับบัตรประจำตัว?


person veilig    schedule 10.08.2011    source แหล่งที่มา
comment
+1 สำหรับการวางโค้ดเพื่อรับรหัสผู้ปกครอง...   -  person balanv    schedule 15.02.2012


คำตอบ (5)


คุณสามารถใช้:

$product->getTypeInstance();

ซึ่งจะส่งคืนวัตถุประเภทผลิตภัณฑ์ของคุณ

จากนั้นคุณสามารถดำเนินการ:

->getParentIdsByChild()

ให้ในที่สุด:

$product->getTypeInstance()->getParentIdsByChild($child->getId());
person eric ramahatra    schedule 21.03.2012
comment
งานนี้เป็นยังไงบ้างคะ? $product->getTypeInstance() จะส่งคืนอินสแตนซ์ผลิตภัณฑ์แบบง่าย แต่เรายังไม่ทราบว่าผลิตภัณฑ์หลักคือประเภทใด - person Hashid Hameed; 30.05.2015

คุณสามารถโทรหาทั้งคู่และเสนอทางเลือกสำรองตามที่ควรจะเป็นอย่างใดอย่างหนึ่ง:

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
    }
}
person Kus    schedule 07.08.2012
comment
หมายเหตุถึงผู้อื่น คุณอาจต้องการตรวจสอบผลิตภัณฑ์ที่กำหนดค่าได้ก่อนหากเกิดขึ้นบ่อยกว่านั้น ทั้งนี้ขึ้นอยู่กับแค็ตตาล็อกของคุณ - person KTastrophy; 23.01.2014
comment
คุณสามารถใช้ Mage_Catalog_Model_Product_Type::TYPE_SIMPLE คงที่แทนที่จะใช้แบบธรรมดา - person magic_al; 24.01.2014

นี่เป็นอีกวิธีหนึ่งสำหรับ magento 1.7.2

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

เราสามารถใช้ในไฟล์บล็อก, 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;     
        }   
person Rakesh Jesadiya    schedule 04.12.2015

คุณสามารถตรวจสอบประเภทของผลิตภัณฑ์ด้วย $_product->getTypeId(); และหากส่งคืน 'ที่กำหนดค่าได้' ให้ใช้โมเดลที่กำหนดค่าได้ และหากส่งคืน 'จัดกลุ่ม' ให้ใช้โมเดลที่จัดกลุ่ม

หวังว่านี่จะช่วยได้

person Simon    schedule 10.08.2011
comment
ไม่แน่ใจว่าเป็นเช่นนั้น :( หากคุณมีผลิตภัณฑ์ธรรมดาและพยายามรับพาเรนต์ (จัดกลุ่มหรือกำหนดค่า) เมธอด getTypeId จะส่งคืน 'simple' เท่านั้น...และคุณยังไม่รู้ว่าคุณจำเป็นต้องใช้การกำหนดค่าหรือ โมเดลที่จัดกลุ่ม - person veilig; 10.08.2011
comment
ฉันขอโทษ คุณพูดถูกจริงๆ ดังนั้นฉันจึงไม่รู้อะไรดีไปกว่าการใช้ทั้งแบบจำลองที่กำหนดค่าได้และแบบกลุ่มแล้วรวมผลลัพธ์เข้าด้วยกัน คุณสามารถตรวจสอบได้ว่าอันไหนส่งคืนอาร์เรย์ว่างและไม่ต้องสนใจอันนี้ - person Simon; 11.08.2011
comment
คุณจะใช้โมเดลที่กำหนดค่าได้อย่างไร? - person ahnbizcad; 17.02.2016
comment
@ahnbizcad Mage::getModel('catalog/product_type_configurable') - person Simon; 17.02.2016