Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento:按选项筛选可配置产品_Magento_Filter - Fatal编程技术网

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

Magento:按选项筛选可配置产品,magento,filter,Magento,Filter,我想按属性过滤一些可配置的产品,这些属性用于创建该产品的更多实例(大小、颜色等)。这意味着这些属性不是直接分配给可配置产品,而是分配给它们的子项 我已经有了一个代码,可以通过一些属性过滤可配置的产品,但是这些属性都被分配给主产品,并且子产品继承了:designer $attributes_designers = $this->getRequest()->getParam('designers'); $attributes_colors = $this->getReques

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

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

在这里,
颜色
尺寸(服装)
)不起作用,因为它们不是直接分配给产品的,而是它们的子产品。

如果我在这里理解正确的话……您首先需要获得具有以下内容的子产品:

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