2010-09-20 8 views
3

Je souhaite filtrer certains produits configurables en fonction des attributs utilisés pour créer plus d'instances de ce produit (taille, couleur, etc.). Cela signifie que ces attributs ne sont pas directement affectés au produit configurable, mais à leurs enfants.Magento: Filtre Produit configurable par ses options

J'ai déjà un code qui filtre les produits configurables par certains attributs, mais ceux-ci sont tous affectés au produit principal, et les enfants héritent de ce: concepteur.

$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(); 

ici, le color et size_apparel_eu, ne fonctionnent pas, parce que ceux qui ne sont pas directement affectés au produit, mais leurs enfants.

Répondre

1

Si je vous comprends bien ici ... Vous devez d'abord obtenir les produits de l'enfant avec quelque chose comme ceci:

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

Ensuite, vous pouvez utiliser une sorte de boucle (foreach est à portée de main)

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

Cependant, vous devez appeler ces méthodes pour obtenir les informations sur le produit enfant.

J'espère que cela a été utile et pertinent!

Questions connexes