После версии 1.4.2.0 методы loadParentProductIds()
и getParentProductIds()
устарели. Не спрашивай меня почему. Лично мне нравились эти методы. Так что я снова познакомил их с моими местными классами Магов. Вот как:
Копия
app/code/core/Mage/Catalog/Model/Product.php
до
app/code/local/Mage/Catalog/Model/Product.php
и измените метод loadParentProductIds()
, найденный вокруг строки 1349, на:
public function loadParentProductIds()
{
return $this->_getResource()->getParentProductIds($this);
}
Этот фрагмент кода запросит у своего ресурса идентификаторы родительского продукта. Чтобы это работало, нам нужно переписать метод getParentProductIds()
в классе ресурсов.
Итак, копия:
app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product.php
до
app/code/local/Mage/Catalog/Model/Resource/Eav/Mysql4/Product.php
Найдите устаревший getParentProductIds()
метод. Должно быть где-то в строке 535. Перезаписать его с кодом pre 1.4.2.0:
public function getParentProductIds($object){
$childId = $object->getId();
$groupedProductsTable = $this->getTable('catalog/product_link');
$groupedLinkTypeId = Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED;
$configurableProductsTable = $this->getTable('catalog/product_super_link');
$groupedSelect = $this->_getReadAdapter()->select()
->from(array('g'=>$groupedProductsTable), 'g.product_id')
->where("g.linked_product_id = ?", $childId)
->where("link_type_id = ?", $groupedLinkTypeId);
$groupedIds = $this->_getReadAdapter()->fetchCol($groupedSelect);
$configurableSelect = $this->_getReadAdapter()->select()
->from(array('c'=>$configurableProductsTable), 'c.parent_id')
->where("c.product_id = ?", $childId);
$configurableIds = $this->_getReadAdapter()->fetchCol($configurableSelect);
return array_merge($groupedIds, $configurableIds);
}
Теперь вы снова можете сделать это:
$_product->loadParentProductIds()->getData('parent_product_ids');
Надеюсь, это поможет вам!