$theTitle=wp_title(" - ", false); if($theTitle != "") { ?>
Expert Magento – Magento Developer Certified Plus
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, fondateur de l'agence web e-commerce PH2M et anciennement étudiant en Master MIAGE à Toulouse.
Ce site présente mes réalisations professionnelles, personnelles et universitaires.
46 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 :
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 :
J’ai également essayé avec cette méthode :
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 :
et Non :
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 :
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.
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
Steeve
février 11th, 2012 à 16 h 31 min
Bonjour à tous,
Débutante avec Magento je suis tres vite confrontée aux difficultés d utilisation et notamment pour la créa d’un produit configurable,
mon problème est que lorsqu’on sélectionne un modèle d’article du produit Configurable, ni son image ni son nom SKU ne sont repris dans le tableau récapitulatif du panier ainsi que le petit cartouche récap du panier de la colonne (il y a juste un layer sur le lien qui indique le nom spécifique).
Car là , ces infos ne reprennent que l’image et le nom initial du produit configurable .
Comment est il possible svp de corriger cela dans le BACK Office sans forcement passer par le code? le but est que le SKU et son image suivent.
Ca fait des heures que je recherche mais rien!
Merci d’avance
Frédéric Martinez
février 13th, 2012 à 16 h 40 min
@Steeve : Normalement, les produits simples des produits configurables n’ont pas d’image. Lors de l’ajout au panier, le produit simple du configurable est ajouté et il possède l’image de son parent.
Vous pouvez vérifier via la démo de Magento (produit configurable) :
http://demo.magentocommerce.com/coalesce-functioning-on-impatience-t-shirt.html
Ainsi c’est votre boutique qui ne fonctionne pas correctement.
1) Essayez de désactiver votre thème, c’est peut-être lui à l’origine du problème
2) Votre back-office, supprimez le cache, rafraichissez les index
3) Vos produits n’ont pas été créés correctement, import non complet ?
Steeve
février 15th, 2012 à 14 h 32 min
Bonjour,
le produit configurable semble bien fonctionner à la base, j arrive a faire remonter l image du prod simple mais rien pour la valeur de l attribut du prod simple.
Faire remonter la Vignette du produit lui même, aller dans
Système / Configuration / Ventes /Commander /Panier / Image de produit configurable / Menu déroulant Vignette du produit lui même !
Comment faire pour le nom est ce qu a la base ca le fait automatiquement ?
merci
Steeve
février 15th, 2012 à 14 h 34 min
Est la base, la valeur de l attribut s ajouter automatiquement au nom du prod configurable ou paramétrable aussi facilement que pour l image dans le BO?
merci
Frédéric Martinez
février 15th, 2012 à 14 h 38 min
@Steeve : Est-ce que le fonctionnement de base d’un produit configurable est ce que vous recherchez ? Essayez d’ajouter cela au panier : http://demo.magentocommerce.com/coalesce-functioning-on-impatience-t-shirt.html.
Si oui : votre Magento a un problème quelque part. Sinon, vous demandez quelque chose qui n’est pas standard dans Magento et vous devrez modifier le code pour arriver à vos fins.
Je ne vois pas comment vous aider plus.
Steeve
février 16th, 2012 à 16 h 22 min
@Frédéric Martinez,
c est exactement ce que je recherche, la valeur de l attribut (ici la taille choisit) est bien reprise dans le panier.
j ai la version 1.501 de Mag.
D’ou çà peut provenir ? pourtant y a bien le menu déroulant et Mag comprend bien le modèle spécifique !
Steeve
février 21st, 2012 à 15 h 01 min
Il y a de bonne chance pour que la ligne de code reprenant la nom de l attribut et sa valeur aient été effacé lors du retravail du tableau du panier.
Quel est le ligne de code qui présente l’attribut et sa valeur comme ton exemple stp ?
@+
Frédéric Martinez
février 21st, 2012 à 15 h 20 min
@Steeve : Si vous renommez le fichier qui affiche les lignes du panier, Magento devrait prendre le fichier du core. Si le résultat est bon pour vous, alors recherchez les différences entre les fichiers.
Utilisez Winmerge par exemple : http://winmerge.org/.
Sinon, c’est que votre fichier du core est aussi modifié, alors vous devez faire la différence avec un Magento 1.5.0.1 de base : http://www.magentocommerce.com/getmagento/1.5.0.1/magento-1.5.0.1.zip.
Vous devriez normalement y arriver !
Olivier
février 24th, 2012 à 19 h 22 min
bonjour,
Après avoir créé dans le back office, une option personnalisable pour mon produit.
J’aimerai savoir comment, on peut changer la couleur bleu dans le front office, lorsque que l’on sélectionne cette option !!!
J’ai l’impression que ce n’est pas du css, mais plutôt une image !!! Si c’est le cas, je ne vois vraiment pas où elle est !!!!
Merci pour votre aide
Frédéric Martinez
février 24th, 2012 à 19 h 30 min
@Olivier : Apprenez à utiliser Firebug, cela vous sera très utile !
Olivier
février 24th, 2012 à 21 h 16 min
Merci pour votre conseil ! Mais il se trouve que je me sers dejà de firebug et je vois que ceci
html
l
m
s
css
.product-options dl.last dd.last {
border-bottom: 0 none;
margin-bottom: 0;
padding-bottom: 5px;
}
et je ne vois rien pouvez vous me donner la ligne / la class /id ?
Merci
funpro
mai 14th, 2012 à 22 h 19 min
bonjour
excuse moi l’autre fois je n’est pas bien expliquer mais j’ai trouver la solution mais maintenant je cherche une solution pour un autre problème
j’essaille d’ajouter plusieurs produits dans le panier au même temps mais
$itmes=array(‘id’=>IDProd,’qty’=>QtyProd)
or il les ajout mais avec un prix= 0 sauf le premier et si je afface un d’eux il ajout le prix des autre produits
j’ai tester avec mètre mon code dans un boucle mais rien même problème je ne sais plus comment faire
Merci :)
Jeff
juillet 10th, 2013 à 19 h 06 min
Bonjour,
Je cherche à afficher la ref. produit dans la fiche produit coté public dans le bloc « informations complémentaires ».
Je ne vois pas comment faire. Vous auriez une solution ?
Merci
Frédéric Martinez
juillet 11th, 2013 à 18 h 02 min
@Jeff : Dans la configuration de ton attribut (Catalog > Attributs > Gérer les attributs), mettre « Visible sur la page produit » à Oui.
patoche
avril 7th, 2014 à 12 h 04 min
Bonjour,
Lors de l’affichage des attributs en mode selection multiples sur le frontend (fiche produits), il y a un séparateur virgule entre les options des labels.
Savez vous ou je dois intervenir pour supprimer cette virgule.
Merci de votre aide si possible
Frédéric Martinez
avril 7th, 2014 à 13 h 26 min
@patoche : vous pouvez utiliser un php/explode sur la virgule
patoche
avril 7th, 2014 à 22 h 54 min
ouaou, j’ai fait une recherche sur le php/explode, merci pour l’orientation.
Par contre je ne sais pas ou se trouve le fichier qui gère ce séparateur virgule entre les options de la sélection multiple des attributs.
Frédéric Martinez
avril 8th, 2014 à 10 h 33 min
@patoche : je ne peux vous aider plus.
Vous pouvez récuperer les différents options via un explode.
Pour récupérer les options, c’est via l’objet « $product » (Mage_Catalog_Model_Product).
Pour récupérer le product, cela dépend d’où vous êtes, une page produit, une page listing ?
Là , vous retombez sur une logique Magento, et je vous conseille de vous orienter vers des guides de développement pour savoir quoi et où modifier.
Etienne
avril 10th, 2014 à 11 h 37 min
Bonjour
Je cherche à supprimer certains attributs, uniquement pour certaines catégories de produits.
Comment faut il faire ?
Frédéric Martinez
avril 10th, 2014 à 18 h 05 min
@Etienne : Pour supprimer un attribut produit en code, il faut utiliser deleteAttribute (https://github.com/benmarks/magento-mirror/blob/1.7.0.2/app/code/core/Mage/Eav/Model/Entity/Setup.php#L986) Ã utiliser sur ton setup.
Il n’est pas possible de « supprimer » un attribut que pour un type d’attributs produit, mais d’enlever cet attribut de ce groupe d’attributs sans pour autant le supprimer.
Pour ajouter un attribut, depuis Mage_Eav_Model_Entity_Setup, tu utilises normalement « addAttribute » puis « addAttributeToSet » pour ajouter ton nouvel attribut à un « set » (groupe d’attributs). Je te laisse chercher de ce côté là , il doit être facile de trouver la méthode qui enlève cet attribut (sans pour autant le supprimer complètement).
Mickael
novembre 13th, 2014 à 19 h 04 min
Bonjour Frédéric,
J’ai une question assez simple: sauriez-vous pourquoi toute ma rubrique Gérer labels/options dans Attributs ne s’affiche pas ?
Impossible d’ajouter des libellés et de gérer correctement les attributs, puisque cette rubrique est complèetement vierge, rien ne s’affiche.
J’utilise la version Magento Community 1.9.0
Je peux vous envoyer une capture d’écran si besoin.
Merci pour votre aide,
Mickael
Frédéric Martinez
novembre 13th, 2014 à 19 h 16 min
@Michael : Sur une version out of box, cela fonctionne bien. A la limite, cache+index.
Je pense que c’est :
1) Soit un module qui surcharge cette fonctionnalité et qui est bugguée (désactivez tous les modules locaux et communautaires pour voir)
2) Soit c’est en base de données qui cela déconne, et votre import d’attributs via un outil externe n’a pas bien fonctionné. (Après un dump de votre base) Essayez de supprimer tous les attributs et les options pour voir ci cela fonctionne.
Corrigez après coup, les fichiers ou les entrées dans la BDD.
Plaverna
mars 6th, 2015 à 11 h 15 min
Bonjour à tous,
Je souhaite supprimer complètement l’onglet ‘informations additionnelles’ qui se trouve dans le block tab de la fiche produit.
Quelqu’un peut-il m’aider??
Frédéric Martinez
mars 6th, 2015 à 13 h 42 min
@ Plaverna: Dans votre fichier de layout qui gère votre thème, il faut supprimer le bloc des informations additionnelles :
danygwada
mai 7th, 2015 à 14 h 10 min
Bonjour et merci pour ce blog très intéressant et utile.
J’ai un problème : je souhaiterais inclure un attribut créé par mes soins sur chaque article affiché dans la page catégorie en lieu et place de la description courte. Je signal que mon attribut se charge bien sur la page produit par exemple. Mais impossible de l’afficher sur la page catégorie, seul les attributs initiaux de magento peuvent y être affiché (nom, sku etc). Faut il chargé mon attribut dans un autre fichier afin qu’il soit reconnu ?
ma ligne code est :
Quelqu’un aurait une idée ???
Merci de toutes aides
Frédéric Martinez
mai 11th, 2015 à 7 h 43 min
@danygwada : Votre attribut personnalisé n’est pas chargé dans la collection de produit.
Depuis l’administration, il vous faut modifier le champ « Utiliser dans les listes de produits » Ã « Oui ».
En créant les attributs en code, c’est le champ « used_in_product_listing » qu’il faut mettre à « 1″.
Après avoir réindexer, vous devriez avoir une nouvelle colonne avec le code de votre attribut dans la table « catalog_product_flat_* »
danygwada
mai 15th, 2015 à 9 h 58 min
Un grand merci, çà fonctionne impeccable ^^
Mylène
mai 21st, 2015 à 16 h 26 min
Bonjour !
Très bel article qui sauve la vie ! ;)
J’ai une petite question :
je souhaiterais afficher un attribut dont le label est « Structure » dans ma fiche produit. J’ai donc mis ce code ci :
Mais je voudrais aussi que lorsque mon attribut est vide, rien ne s’affiche. Je m’explique mieux : chaque fiche produit n’a pas forcément l’attribut « Structure ». Avez-vous une solution ?
Merci de vos réponses.
Frédéric Martinez
mai 22nd, 2015 à 9 h 54 min
@Mylène : Il faut tester sur votre produit possède l’attribut :
Mylène
mai 28th, 2015 à 14 h 10 min
Simple mot : MERCI !!!!!