Ответ 1
Вы можете использовать:
$product->getTypeInstance();
Что будет возвращать объект типа вашего продукта
Затем вы можете выполнить:
->getParentIdsByChild()
Наконец:
$product->getTypeInstance()->getParentIdsByChild($child->getId());
Я знаю, что в Magento 1.4.2.0 вы получаете родительский идентификатор, подобный этому
list( $parentId ) = Mage::getModel('catalog/product_type_configurable')
->getParentIdsByChild( $product->getId() );
Мой вопрос: если я не знаю, что такое родитель, откуда я знаю, что использовать каталог /product _type_ настраиваемый 'vs' catalog/product_type_ сгруппированный 'для получения идентификатора?
Вы можете использовать:
$product->getTypeInstance();
Что будет возвращать объект типа вашего продукта
Затем вы можете выполнить:
->getParentIdsByChild()
Наконец:
$product->getTypeInstance()->getParentIdsByChild($child->getId());
Вы можете просто позвонить обоим и предложить отступить, так как это должно быть одно или другое:
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
}
}
Вот еще одно решение для magento 1.7.2
$parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($mageProduct->getId());
мы можем использовать в блочном файле, 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;
}
Вы можете проверить тип продукта с помощью $_product->getTypeId();
, и если это вернет "настраиваемый", возьмите конфигурационную модель и, если она вернет "сгруппированные", возьмите сгруппированную модель.
Надеюсь, что это поможет.