2010-09-20 68 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'); 
} 

或者您需要調用這些方法來獲取子產品信息。

我希望這是有幫助和相關的!