внутреннее объединение простых и сгруппированных продуктов по атрибутам простого продукта (Magento) - PullRequest
2 голосов
/ 25 февраля 2012

Я пытаюсь показать список сгруппированных продуктов на основе атрибутов связанных с ним простых продуктов.Прямо сейчас я делаю, как показано ниже


 - Create a collection of simple products and add attribute filters like color,brand etc., like below

$productCollection = Mage::getModel('catalog/product')->getCollection()
        ->addStoreFilter(Mage::app()->getStore())
        ->addAttributeToFilter($aname,$avalue)
        ->addAttributeToFilter('type_id', array('eq' => 'simple'))
        ->addAttributeToFilter(ATTRIBUTE_CODE,ATTRIBUTE_VALUE_ID);
        (->addAttributeToFilter('color',5))

 - Obtain all resultant ids and get its parent ids using the below
      Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($productCollection->getAllIds());

 - Read the parent ids from above object and show the result in a custom grid that i created

 - Created a paging logic for parent ids and do paging in view file

Эта логика действительно занимает больше времени, есть ли способ, которым я могу сделать все это в одной коллекции?может быть метод внутреннего соединения между простыми и сгруппированными продуктами!

Пожалуйста, предложите.

Спасибо, Балан

Ответы [ 2 ]

0 голосов
/ 14 ноября 2013

Это может быть то, что вы ищете.Это работает хорошо.http://www.commerceextensions.com/filterable-grouped-products.html

0 голосов
/ 27 марта 2012

Это зависит от атрибутов, которые вы хотите фильтровать.
Magento уже подготовил данные для фильтрации сгруппированных продуктов по простым атрибутам продукта.
Он хранится в catalog_product_index_eav.
Но эти атрибуты должны быть отмеченыкак «Фильтруемый» в magento admin.

/** @var $productCollection Mage_Catalog_Model_Resource_Product_Collection */
$productCollection = Mage::getModel('catalog/product')->getCollection();
$productCollection->addStoreFilter(Mage::app()->getStore())
    ->addAttributeToFilter('type_id', 'grouped');
$resource = Mage::getModel('core/resource');
$productCollection->getSelect()
    ->join(array('filter_eav' => $resource->getTableName('catalog/product_index_eav')),
        "e.entity_id = filter_eav.entity_id AND filter_eav.attribute_id = {$attributeId} AND value = {$valueId}",
        array(''));

Первоначально эта таблица используется в Mage_Catalog_Model_Resource_Layer_Filter_Attribute функции applyFilterToCollection.Но для этого требуется фильтровать объект как параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...