Freelance Magento Toulouse – Entrepreneur
Dans: Magento
17 nov 2009Pour afficher des attributs spécifiques sous Magento, soit on met l’attribut « visible » en back-office pour qu’il s’affiche dans le tableau de la fiche produit, soit on écrit dans le template list.phtml.
Vous pouvez donc afficher la référence du produit à l’endroit voulu.
$_product->getData('sku')
Instruction pratique pour afficher les attributs ayant une liste déroulante comme les fabricants par exemple.
$_product->getAttributeText('manufacturer')
Confronté récemment à un attribut ayant une sélection multiple (pour des labels biologiques par exemple), il faut effectuer une boucle sur l’attribut :
<?php foreach($_product->getAttributeText('attribute_id') as $label): ?>
<?php echo $label ?>
<?php endforeach ?>
Dans l’administration, un attribut est composé de son code, de sa valeur admin, et de ses valeurs de front suivant la vue (et donc normalement suivant la langue). Pour les exemples suivant :
Cette instruction permet d’afficher le titre (le libellé) de l’attribut depuis la fiche produit
Mini description :
$_product->getResource()
->getAttribute('short_description')
->getFrontend()
->getLabel($_product)
Affiche : Description courte (ou Short Description si la vue est en anglais)
$_product->getResource()
->getAttribute('short_description')
->getStoreLabel()
Depuis n’importe où :
Mage::getModel('eav/config')
->getAttribute('catalog_product', 'attribute_id')
// pour le libellé Admin
->getFrontend()->getLabel()
// pour le libellé Front
->getStoreLabel()
Voici une instruction permettant aussi d’afficher un attribut simple
$_product->getResource()
->getAttribute('club_type')
->getFrontend()
->getValue($_product)
Pour afficher des stickers (-10% / -20% / …) dans les listings des produits, je me sers de cette méthode beaucoup plus propre pour afficher les attributs personnels (ou en liste déroulante) dans cet article.
Pour compléter cet article, voici un lien assez intéressant permettant d’afficher tous les attributs automatiquement, etc.
Je m'appelle Frédéric Martinez.
Je suis Freelance Magento et anciennement étudiant en Master MIAGE à Toulouse.
Ce site présente mon CV ainsi que mes réalisations professionnelles, personnelles et universitaires.
16 Commentaires pour Affichage des attributs et des libellés sous Magento
solidesnakerz
décembre 15th, 2009 à 19 h 23 min
Super Merci ! Le gros coup de pouce de la journée.
En revanche peux t-on récupérer un attribut images de l’image gallery pour afficher le logo d’une marque par exemple.
Merci d’avance!
Bachir
janvier 12th, 2010 à 18 h 29 min
Salut,
est-ce que quelqu’un a une réponse à ça…? c’est-à dire pour afficher le logo d’une marque.
merci
Frédéric Martinez
janvier 15th, 2010 à 1 h 39 min
@solidesnakerz & @Bachir :
L’attribut « Marque » (manufacturer) n’est composé que d’un libellé ainsi que de sa valeur. Il est impossible en l’état de rajouter une image.
3 solutions :
1) La solution la plus facile est de créer une nouvelle arborescence de catégories et de la nommer « Marques », vous pouvez ainsi ajouter simplement vos images. Du développement concernant l’affichage de vos nouvelles catégories est à prévoir.
2) Ajout les images à l’attribut « Manufacturer » :
=> Du développement (long) ou un module à installer (j’ai l’ai déjà vu passé sur un site Magento. Je ne sais plus s’il était payant)
3) Chaque valeur de marque est un nom du fichier image. Et votre template ira chercher l’image dans le dossier de votre choix. Problème : il faut ajouter/modifier/supprimer via FTP. Solution hyper facile à mettre en place cependant.
William
février 10th, 2010 à 12 h 00 min
Bonjour tout le monde,
J’espere sincèrement trouver une réponse au problème que je rencontre.
J’ai mis en place hier l’affichage de stickers (-10% / -20% / …) dans les listings des produits.
La méthode devant permettre de récupérer la valeur de l’option courante sur un produit de se fait pas.
Il s’agit de la méthode suivante :
$_product->getAttributeTex('promonew')Pour ce code attribut « promonew » dont le titre ou libellé est « badge », j’ai deux options. Pour chaque produit, je peux avoir une ou option sélectionnée ou aucune. Mais impossible de récupérer donc la valeur courante de l’option.
Tout ce que je parvient à récupérer c’est le libellé (titre de l’attribut) via la methode :
$_product->getResource()->getAttribute('conseil_utilisation')->getFrontend()->getLabel($_product)J’ai également essayé avec cette méthode :
$_product->getResource()->getAttribute('club_type')->getFrontend()->getValue($_product)mais cela ne donne rien non plus.
Y aurait il parmis vous une personne qui serait en mesure de m’aider?
En vous remerciant par avance.
William
Frédéric Martinez
février 10th, 2010 à 12 h 13 min
Bonjour William,
1) Il me semble que vous vous êtes trompés dans le nom de la méthode :
$_product>getAttributeText('promonew')et Non :
$_product->getAttributeTex('promonew')2) Pour les choix multiples, il faut boucler sur votre attribut. Commencez par dumper votre variable. Ensuite vous n’avez plus qu’à poser un foreach pour parcourir son contenu.
Julien
mars 27th, 2010 à 18 h 50 min
bonjour, dans la liste de produit d’une catégoriesur mon site je voudrais bien faire aparaitre la pastille de stock, comme dans la fiche d’un produit j’ai réussi a afficher le le nom de l’attribu stockcouleur mais pas la pastille de couleur qui va avec la reponse de a liste déroulante.
je vous remercie.
Frédéric Martinez
mars 28th, 2010 à 17 h 46 min
Comme dans l’article que j’ai cité, regardez la fin du tutoriel, il faut faire une balise span avec comme classe la valeur de votre attribut. Ensuite en CSS, vous affichez votre vignette.
Terzi
mai 5th, 2010 à 14 h 28 min
Bonjour,
Déjà Merci pour votre blog, je n’arrive pas à afficher des options de mon attribut d’un produit configurable sur le listage des produits « list.phtml »
Le code ci-dessous ne me renvois rien :
getAttributeText('manufacturer')J’ai du loupé quelque chose ? des idées ?
En vous remerciant par avance.
SebTerzi
cocobello
mai 17th, 2010 à 13 h 44 min
Bonjour,
Je fais des bijoux à graver.
est-ce qu’il est possible de mettre un attribut : avec gravure/sans gravure. en dessous une case vide avec le texte à graver?!?
Je cherche dans tous les guides et forum, toujours pas trouver comment faire pour la case à remplir par le client….
Merci si vous avez une idée!
Frédéric Martinez
mai 17th, 2010 à 13 h 51 min
Bonjour,
Pour rajouter un champ personnalisé (pour le client), il faut ajouter une « Option Personnalisable » (dernier onglet de la sidebar de gauche dans une fiche produit en back-office).
A partir de là, vous pouvez restreindre la saisie (champ / textarea / coût supplémentaire / etc…)
Bonne continuation.
Frédéric.
cocobello
mai 20th, 2010 à 14 h 31 min
Rebonjour,
où configure-t-on « contactez-nous » sur Magento.
J’ai rentré mes adresses mails dans Système configuration, « adresse mail du magasin » et , « contacts ».
Mais quand j’envoie un mail, voilà la réponse… »Impossible d’envoyer votre demande. Veuillez réessayer plus tard. »
Faut-il rentrer quelquechose dans avancé, système, « serveur »?
Merci beaucoup.
Nathalie
crowker
septembre 2nd, 2010 à 17 h 34 min
Bonjour,
J’essaie de mettre en oeuvre la solution évoquée en étape 3 pour la mise en place de labels bio dans un site de vente de paniers…
J’en profite pour afficher une image du/des labels choisis dans la liste déroulante et stockées dans un répertoire avec le même nom que celui stocké en valeur de mon attribut.
<?php foreach($_product->getAttributeText('attribute_id') as $label): ?> <?php echo $label ?> <?php endforeach ?>Si le code fonctionne parfaitement quand j’effectue une sélection multiple, elle n’affiche plus rien si j’effectue une sélection simple… dois-je tester le nombre de résultats et afficher l’étape 2 en cas de solution unique ?
Merci de votre aide.
Frédéric
cobb
novembre 22nd, 2010 à 18 h 33 min
Bonjour,
Merci pour ces infos. Comment faire pour gérer le multilangue ?
Par exemple, j’aimerai récupérer le libellé d’un attribut, ainsi que toutes ses valeurs possibles (c’est une liste déroulante), tout en utilisant les trads du back office.
J’ai trouvé un bout de code sur le site que vous citez, mais il ne fonctionne que dans l’affichage produit, alors que j »en aurai besoin à partir de n’importe où.
Une idée ? Merci d’avance !
dejonghe
avril 14th, 2011 à 0 h 06 min
Bonjour,
je cherche a récupérer le code de l’attribut pour m’en servir comme classe dans une liste d’attribut
Savez vous si c’est faisable ?
merci d’avance
Tibo
juin 23rd, 2011 à 18 h 02 min
Bonjour,
J’ai cru que le « getStoreLabel() » de votre point 4 allez répondre à ma question, mais non…
En fait je cherche à récupérer la « Value » front de mon attribut qui a une valeur « admin » une autre « french » une autre « english » etc… J’arrive sans souci à remonter la valeur « Admin », mais ensuite impossible d’afficher la valeur dans la langue de mon choix…. une idée ? J’avoue que là, je sèche !
Frédéric Martinez
janvier 4th, 2012 à 20 h 56 min
@crowker : En effet, un selection multiple et simple ne fait pas pareil, et du coup il faut tester pour ne pas utiliser le forearch
@cobb : je ne l’ai pas sous la main, mais il faut rajouter le storeId afin de sélectionner que les valeurs du store voulu
@dejonghe : Oui c’est faisable avec un getAttributeCode()
@Tibo : Idem que cobb en fait, il faut choisir sa portée