Magento:按选项筛选可配置产品

时间:2010-09-20 22:12:03

标签: magento filter

我想通过用于创建该产品的更多实例(大小,颜色等)的属性来过滤一些可配置产品。这意味着这些属性不会直接分配给可配置产品,而是分配给他们的孩子。

我已经有一个代码可以按某些属性过滤可配置产品,但这些代码都分配给主产品,子代继承了: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();

此处colorsize_apparel_eu不起作用,因为这些不是直接分配给产品,而是他们的孩子。

1 个答案:

答案 0 :(得分:1)

如果我在这里正确理解你......你首先需要得到这样的儿童产品:

$_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');
}

或者您需要调用这些方法来获取子产品信息。

我希望这是有用的和相关的!