2010-02-06 4 views
0

J'essaie de comprendre comment obtenir un code d'attribut à partir d'une liste de filtres dans Magento.Magento: Obtenir le code d'attribut

<?php 
$_filters = $this->getFilters(); 
foreach ($_filters as $_filter) 
{ 
    echo $this->__($_filter->getName()); 
    echo $this->__($_filter->getAttributeCode()); # color_name 
} 
?> 

getAttributeCode() n'est pas une méthode. Je veux spécifier un nom de classe CSS pour chaque filtre au attribute_code dans app/design/frontend/default/default/template/catalog/couche/view.phtml

Répondre

14

cela devrait fonctionner:

foreach($filters as $_filter) 
{ 
    $attributeModel = $_filter->getAttributeModel(); 
    if($attributeModel) { 
     echo $attributeModel->getAttributeCode(); 
    } 
} 

La clé ici est de vérifier que le filtre est réellement un attribut car certains ne le sont pas (le plus souvent des catégories) et ces types de filtres n'auront évidemment pas de code d'attribut.

+0

Merci beaucoup. J'étais presque là en l'obtenant de $ this -> _ getFilterableAttributes() Fonction getFilters() dans app/code/noyau/Mage/Catalogue/Bloc/Layer/View.php: $ filters [] = $ this- > getChild ($ attribute-> getAttributeCode() 'filtre'); – MotionGrafika

3

Attention si vous souhaitez utiliser cet extrait dans /catalog/layered/state.phtml; s'il vous plaît utiliser

$attributeModel = $_filter->getFilter()->getAttributeModel(); 

au lieu de

$attributeModel = $_filter->getAttributeModel(); 
Questions connexes