Affichage des attributs et des libellés sous Magento

Dans: Magento

17 nov 2009

Pour 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.

  1. Afficher les attributs avec une zone de texte
  2. Afficher les attributs avec une liste déroulante
  3. Afficher les attributs avec une sélection multiple
  4. Afficher le libellé des attributs
  5. Autres
    1. Afficher les attributs avec une méthode « passe partout »
    2. Afficher les attributs avec une liste déroulante dans un listing de catégorie n’ayant pas chargé l’attribut
    3. Afficher les attributs avec la méthode de gros bourrin => requête SQL avec jointure
    4. Listing de différentes méthodes passe-partout

Etape 1 : Afficher les attributs avec une zone de texte

Vous pouvez donc afficher la référence du produit à l’endroit voulu.

<?php echo $_product->getData('sku'); ?>

Etape 2 : Afficher les attributs avec une liste déroulante

Instruction pratique pour afficher les attributs ayant une liste déroulante comme les marques par exemple.

<?php echo $_product->getAttributeText('manufacturer')?>

Etape 3 : Afficher les attributs avec une sélection multiple

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('labels') as $label): ?>
<?php echo $label ?>
<?php endforeach ?>

Etape 4 : Afficher le libellé des attributs

Cette instruction permet d’afficher le titre (le libellé) de l’attribut

<?php echo $_product->getResource()->getAttribute('conseil_utilisation')->getFrontend()->getLabel($_product) ?>

Etape 5 : Autres

1) Afficher les attributs simples avec une méthode « passe partout »

Voici une instruction permettant aussi d’afficher un attribut simple

$_product->getResource()->getAttribute('club_type')->getFrontend()->getValue($_product)

2) Afficher les attributs avec une liste déroulante dans un listing de catégorie n’ayant pas chargé l’attribut

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.

3) Afficher les attributs avec une liste déroulante avec la méthode de gros bourrin => requête SQL avec jointure

Méthode Bourrin : La requette SQL avec Jointure pour afficher l’attribut color par exemple :

$color = $_product->getData('color');
$store_id = $_product->getData('store_id');
$resource = Mage::getSingleton('core/resource');
$read= $resource->getConnection('core_read');
$userTable = $resource->getTableName('eav_attribute_option_value');
$select = $read->select() ->from('eav_attribute_option_value', array('value')) ->where('store_id = ?', $store_id) ->where('option_id = ?', $color);
$retour_color = $select->query(); $result_color = $retour_color->fetchAll();
// Affiche la valeur de l'attribut color
echo $result_color[0]['value'];

4) Listing de différentes méthodes passe-partout

Pour compléter cet article, voici un lien assez intéressant permettant d’afficher tous les attributs automatiquement, etc.

11 Commentaires pour Affichage des attributs et des libellés sous Magento

Avatar

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!

Avatar

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

Avatar

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.

Avatar

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

Avatar

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.

Avatar

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.

Avatar

Frédéric Martinez

mars 28th, 2010 à 17 h 46 min

Comme dans l’article que j’ai cité (http://goo.gl/40xa), 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.

Avatar

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

Avatar

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!

Avatar

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.

Avatar

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

Formulaire pour Commenter

Bienvenue sur mon Site CV

Je m'appelle Frédéric Martinez.

Je suis étudiant en Master MIAGE à Toulouse et Freelance Magento.

Ce site présente mon CV ainsi que mes réalisations professionnelles, personnelles et universitaires.

rss_32 twitter_32