Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Un attribut numérique filtré comme le prix
 
timovski
Jr. Member
 
Avatar
Total Posts:  18
Joined:  2008-04-26
France
 

Salut à tous, j’ai fait pas mal de recherche sur le forum mais je n’ai pas trouvé.

Voilà je souhaite afficher un filtre basé sur un attribut article dans une catégorie, jusque là rien de nouveau c’est possible en natif avec Magento.

Là où cela ce complique c’est que cet attribut est de nature numérique, avec ou sans décimal et que je voudrais que l’affichage se fasse à la manière du prix. Comme vous le savez le filtre de prix est dynamique et il génère des tranches de prix en fonction des prix des articles de la catégorie et aussi en fonction de leur nombre, j’imagine qu’il y a surement un système de pondération pour générer les tranches ou d’écart type… enfin bref. J’aime bien la façon dont les tranches de prix sont gérées (du moins pour des prix qui ne sont pas trop étalé), j’aimerais réutiliser cette gestion pour un attribut qui n’est pas un prix, mais une valeur numérique quelconque.

On peut rappeler que les filtres de prix et de catégories sont gérés séparément des autres attributs, ils ont leur propres règles d’affichage. Tenez jetez un Å“il dans : Magento… /app/code/core/Mage/Catalog/Block/Layer/Filter/…
On trouve un fichier PHP Price.php et Category.php

Pareil dans le dossier suivant : Magento… /app/code/core/Mage/Catalog/Model/Layer/Filter/…
Donc le filtre de prix est bien géré séparément.

Dans le back-office lorsque je créer un attribut j’ai le choix entre différents types. Seul trois types d’attributs permettent un affichage dans le filtre : Liste déroulant, Liste multi-choix et Prix.

Je me suis dit, si j’utilise le type d’attribut Prix pour des données numériques je réutilise l’algorithme qui gère les tranches de prix automatiquement, seulement il m’affiche une décimal à deux chiffres après la virgule et le symbole de la devise (euro dans mon cas), ce qui est normal vu que le type de champ est Prix.

J’ai pas mal cherché sur le forum pour savoir comment enlever dans un premier temps le symbole de la devise mais je pense que si je l’enlève, je l’enlève partout, sur les fiches produits, dans les listing de catégories, pas top non plus.

En fait il faudrait dire à Magento la chose suivante :

Si code attribut = price alors afficher code de la devise
Si code attribut = surface alors afficher l’unité adéquate (exemple m²)
Sinon ne rien afficher, laisser les chiffres sans unités.

Voilà ce que je voudrais faire. De cette façon je pourrais utiliser le système de filtre de prix pour des données numérique, il est bien fait, il fonctionne bien, ce serait pas mal de le réutiliser je pense. Cette technique est très importante pour permettre aux clients de trouver très rapidement un produit, on peut augmenter de façon significative le taux de conversion. Les clients cible très rapidement un produit, surtout dans une boutique où il y a un choix énorme.

Vous me direz mais pourquoi ne pas faire cela via un attribut de type liste déroulant ou choix-mulitple ?

Il est clair que pour des données prédéfinies, par exemple le nombre de portes pour les voitures, c’est possible de le faire via la sélection multiple ou bien une liste déroulante : 3 portes, 5 portes. C’est possible.
Par contre, imaginez que vous vendez de l’immobilier, vous aurez surement un attribut surface pour chaque habitation.

Or il existe un très grand nombre de surfaces différentes pour les habitations : 100 m², 101 m², 206.5 m², 226.8 m², 26 m², 25.4 m².
Impossible de tous les rentrer manuellement dans une liste déroulante, vous imaginez la “lourdeur” de gestion derrière. Horrible.
On pourrait aussi faire les tranches soit même via un attribut spécial de type texte tout simple, comme cela :

moins de 10 m²
de 10 à 20 m²
de 20 à 30 m²
de 30 à 50 m²
de 50 à 75 m²
de 75 à 100 m²
de 100 à 150 m²
de 150 à 200 m²
de 200 à 300 m²
plus de 300 m²

Mais ça implique de ranger chaque article manuellement dans la bonne tranche, l’erreur humaine est certaine et grandement favorisée. Pas top non plus et pas flexible.

Y’a t-il la possibilité de conditionner l’affichage du symbole de devise d’un attribut prix en fonction du code de l’attribut ?
Quelqu’un a t-il déjà réaliser ce genre de filtre ?
Pensez vous qu’il est possible de gérer ce genre de problématique via un champ attribut de type Prix ?
Ou bien faudrait-il créer un nouveau type d’attribut géré
Avez vous d’autres solution à proposer ?

grin

 
Magento Community Magento Community
Magento Community
Magento Community
 
timovski
Jr. Member
 
Avatar
Total Posts:  18
Joined:  2008-04-26
France
 

J’ai trouvé cette classe

protected function _renderItemLabel($range$value)
    
{
        $store 
Mage::app()->getStore();
        return 
$store->formatPrice(($value-1)*$range) . ' - ' $store->formatPrice($value*$range);
    
}

Qui est dans app/code/core/Mage/Catalog/Layer/Filter/Price.php

C’est elle qui affiche chaque tranche (vous pouvez voir le tiret entre les deux) de prix dans le filtre Shop by Price.

Quelqu’un sait comment je pourrais conditionner l’affichage du symbole de devise ?
L’objet formatPrice, comment je peux lui enlever le symbole de devise conditionné par le code attribut ?

J’ai cherché mais j’ai pas trouvé…
A l’aide !

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top