Magento: Фильтруйте конфигурируемый продукт по его параметрам - PullRequest
3 голосов
/ 21 сентября 2010

Я хочу отфильтровать некоторые настраиваемые продукты по атрибутам, которые используются для создания большего количества экземпляров этого продукта (размер, цвет и т. Д.). Это означает, что эти атрибуты не назначаются напрямую конфигурируемому продукту, но их дочерние элементы.

У меня уже есть код, который фильтрует конфигурируемые продукты по некоторым атрибутам, но все они назначены основному продукту, и дети наследуют это: designer.

$attributes_designers = $this->getRequest()->getParam('designers');   
$attributes_colors = $this->getRequest()->getParam('color');
$attributes_sizes = $this->getRequest()->getParam('size');



$currentCategory =  Mage::getModel('catalog/layer')->getCurrentCategory(); 
$_productCollection = $currentCategory->getProductCollection();

if(count($attributes_designers)>0 and !in_array("ALL",$attributes_designers)) {        
    $_productCollection->addAttributeToFilter('designer',$attributes_designers);
}
if(count($attributes_colors)>0 and !in_array("ALL",$attributes_colors)) {        
    $_productCollection->addAttributeToFilter('color',$attributes_colors);
}
if(count($attributes_sizes)>0 and !in_array("ALL",$attributes_sizes)) {        
    $_productCollection->addAttributeToFilter('size_apparel_eu',$attributes_sizes);
}
if(isset($_GET['order'])) $_productCollection->setOrder($this->getRequest()->getParam('order'), $this->getRequest()->getParam('dir'));

 $_productCollection->load();

здесь, color и size_apparel_eu не работают, потому что они не назначены непосредственно продукту, а их дочерним элементам.

1 Ответ

1 голос
/ 04 августа 2011

Если я вас правильно здесь понимаю ... Сначала вам нужно приобрести детские товары с чем-то вроде этого:

$_product = $this->getProduct();
$_configurable_model = Mage::getModel('catalog/product_type_configurable');
$_child_products = array();
if ($_product->getTypeId() == 'configurable')
  $_child_products = $_configurable_model->getUsedProducts(null, $_product);

Тогда вы можете использовать какой-то цикл (foreach удобен)

foreach ($_child_products as $_child_product){
    $_child_product->getRequest()->getParam('designers');
}

Или же вам нужно вызвать эти методы, чтобы получить информацию о детском продукте.

Надеюсь, это было полезно и полезно!

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