J'essaie de montrer ajouter des filtres sur mon magasin, mais ils ont un effet secondaire désagréable. Supposons que j'ai le type de produit A et B. Maintenant, je veux seulement montrer A où couleur = bleu/rouge.Magento: addAttributeToFilter mais ignore pour les produits qui n'ont pas cet attribut?
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this)
->addAttributeToFilter(array(
array('attribute' => 'color', 'in' => array(4, 6)),
)
);
Cela fait l'affaire, mais maintenant parce que le type de produit B n'a pas de valeur attribuée à la couleur (puisque cet attribut est pas nommé à elle) aucun produit fo ce type montrer.
j'avais trouvé ce code sur le forum http://www.magentocommerce.com/boards/viewthread/178309, mais il ne fonctionne pas:
array('attribute' => 'color', 'is' => new Zend_Db_Expr('null'))
Ni ne:
array('attribute' => 'color', 'null' => true),
Cela montre en fait des produits wich ont l'attribut attribué, mais sans valeur déclarée ...
J'ai également essayé d'ajouter:
array('attribute' => 'price', 'gteq' => 0),
Parce que je pensais que ces déclarations étaient liées à « OR » (selon la documentation) mais même cela ne fait qu'ajouter des types de produits wich ont l'attribut attribué ...
Notez que ces valeurs proviennent d'une liste déroulante , je ne sais pas si c'est important.
Où appelez-vous cela à partir? (Quel est le "$ this" dans la méthode call -> addCategoryFilter ($ this)) –
Je l'appelle dans getProductCollection() dans app/code/core/mage/catalogue/model/category.php – Rakward