Changer l’affichage de la liste déroulante de Magento

Blog de l'équipe Magento

Nativement, Magento affiche une liste déroulante avec une multiselection lorsque que l’attribut comporte plus de deux options.

Pour faire afficher dans une liste déroulante simple, il faut copier le fichier app/code/core/Mage/CatalogSearch/Block/Advanced/form.php et le coller dans app/code/local/Mage/CatalogSearch/Block/Advanced/form.php  (pour éviter qu’à la prochaine mise à jour de Magento, le code soit écrasé).

Changer le code

public function getAttributeSelectElement($attribute)
{
// 2 - avoid yes/no selects to be multiselects
if (is_array($options) && count($options)>2) {
$extra = 'multiple="multiple" size="4"';
$name.= '[]';
}
else {
array_unshift($options, array('value'=>'', 'label'=>Mage::helper('catalogsearch')->__('All')));
}
 
Par
public function getAttributeSelectElement($attribute)
{
// 2 - avoid yes/no selects to be multiselects
if (is_array($options) && count($options)>1000) {
$extra = 'multiple="multiple" size="4"';
$name.= '[]';
}
else {
array_unshift($options, array('value'=>'', 'label'=>Mage::helper('catalogsearch')->__('All')));
}
}

 

Autre technique :changer avec ce code
public function getAttributeSelectElement($attribute,$dropdown=false)
{
// 2 – avoid yes/no selects to be multiselects
if (!$dropdown && is_array($options) && count($options)>2) {
$extra = ‘multiple= »multiple » size= »4″‘;
$name.= ‘[]’;
}
else {
array_unshift($options, array(‘value’=> », ‘label’=>Mage::helper(‘catalogsearch’)->__(‘All’)));
}

}

Et dans le fichier : app/design/frontend/default/MON THEME/template/catalogsearch/advanced/form.php ligne 60 changer avec ce code

case 'select': ?>
<div class="input-box">
<?php echo $this->getAttributeSelectElement($_attribute,true) ?>
</div>
<?php break;

Cédric
co-fondateur de l'agence
Voir les articles de Cédric

1 commentaire sur “Changer l’affichage de la liste déroulante de Magento

Les commentaires sont fermés.