2010-09-20 83 views
3

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

我已经有一个代码可以通过某些属性来过滤可配置的产品,但是这些代码都被分配给主要产品,并且子代继承: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

如果我正确理解你在这里...你首先需要获取子产品,是这样的:

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

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

我希望这是有帮助和相关的!