Cette article reprend le tutoriel très complet de jguiss que vous trouverez ici : http://www.jguiss.com/2009/06/customiser-la-liste-des-produits-sur-magento/
Pour aller plus loin, on peut insérer dans cette vignette la valeur en pourcentage de la promotion. Vous trouverez le code pour y parvenir ici : http://internet-pau.com/magento/2010/06/calcul-automatique-des-promotions-en-pourcentage/
1- Créer un attribut
<?php /* AFFICHAGE DE LA VIGNETTE PROMO */
$vignette = $_product->getAttributeText('etiquette');
if (!empty($vignette)) { ?> // si l'attribut vignette est renseigné, on affiche le bloc vignette
<div> // on ajoute devant la class de style list (pour l'affichage dans list.phtml) et view pour view.phtml, car la class .-10% n'est pas valide contrairement à .list10
<?php if ($vignette != 'promotion' && $vignette != 'nouveaute' && $vignette != 'topvente') { ?> // si l'attribut de vignette est différent de promotion, nouveauté et topvente, alors on affiche le montant (10,11...)
-<?php echo $vignette; ?>% // on affiche la valeur de la promo
<?php } ?>
</div>
<?php } ?>
Dans l’admin Catalogue > Attributs > Gérer les attributs > Nouvel attribut
Créer attribut « etiquette » labels : « promotion, topvente, nouveaute,10,15,20… »
Définir les groupes d’attribut avec le nouvel attribut « etiquette »
2- Actualiser le Layout de chaque catégorie pour y insérer l’étiquette
Layout catalog : rechercher « product-list » et ajouter <action method=’addAttribute’><attribute>etiquette</attribute></action>
Ou bien, dans le XML de mise à jour d’agencement, section CMS, dans l’admin, ajouter :
<reference name='content'> <block type='catalog/product_list' name='product_list'> <action method='addAttribute'><attribute>etiquette</attribute></action> </block> </reference>
/app/design/frontend/default/blue/template/catalog/product/list.phtml
/app/design/frontend/default/blue/template/catalog/product/view.phtml
/app/design/frontend/default/blue/template/catalog/product/sales.phtml
/app/design/frontend/default/blue/template/catalog/product/new.phtml … ajouter :
<div class="<?php echo $_product->getAttributeText('etiquette')?>"></div>
Si on souhaite afficher le montant de la promo dans la vignette:
<?php /* AFFICHAGE DE LA VIGNETTE PROMO */
$vignette = $_product->getAttributeText('etiquette');
if (!empty($vignette)) { ?> // si l'attribut vignette est renseigné, on affiche le bloc vignette
<div> // on ajoute devant la class de style list (pour l'affichage dans list.phtml) et view pour view.phtml, car la class .-10% n'est pas valide contrairement à .list10
<?php if ($vignette != 'promotion' && $vignette != 'nouveaute' && $vignette != 'topvente') { ?> // si l'attribut de vignette est différent de promotion, nouveauté et topvente, alors on affiche le montant (10,11...)
-<?php echo $vignette; ?>% // on affiche la valeur de la promo
<?php } ?>
</div>
<?php } ?>
3- Modifier le fichier css style.css … ajouter :
/* Etiquette de promo... */
.item { position:relative; }
.topvente, .promotion, .nouveaute, .dix, .quinze, .vingt {
position:absolute;
float:right;
display:inline;
height:50px;
width:50px;
}
.topvente { background:transparent url(../images/topvente.png) no-repeat scroll 0 0; }
.promotion { background:transparent url(../images/promotion.png) no-repeat scroll 0 0; }
.nouveaute { background:transparent url(../images/nouveaute.png) no-repeat scroll 0 0; }
.dix { background:transparent url(../images/dix.png) no-repeat scroll 0 0; }
.quinze { background:transparent url(../images/lavillauroy/quinze.png) no-repeat scroll 0 0; }
.vingt { background:transparent url(../images/vingt.png) no-repeat scroll 0 0; }
Si on souhaite afficher le montant de la promo dans la vignette:
/* Etiquette de promo... */
.item { position:relative; }
.viewtopvente, .viewpromotion, .viewnouveaute {
position:absolute;
height:50px;
width:50px;
right:0;
top:0;
text-align:center;
font:bold 14px/44px Arial, Helvetica, sans-serif;
color:#FFF;
}
.listtopvente, .listpromotion, .listnouveaute {
float:right;
height:50px;
width:50px;
text-align:center;
font:bold 14px/44px Arial, Helvetica, sans-serif;
color:#FFF;
}
.viewtopvente, .listtopvente { background:transparent url(../images/topvente.png) no-repeat scroll 0 0; }
.viewpromotion, .listpromotion { background:transparent url(../images/promotion.png) no-repeat scroll 0 0; }
.viewnouveaute, .listnouveaute { background:transparent url(../images/nouveaute.png) no-repeat scroll 0 0; }
Silv3r
17 juillet 2010 à 15 h 55 min
Bo,jour ! Merci pour cet exellent tuto
Avant de le tester, pourriez-vous me dire si celui-ci fonctionne avec Magento 1.4.1.0 ?
Adeline
17 juillet 2010 à 15 h 57 min
Oui cela fonctionne parfaitement.
Alex
2 septembre 2010 à 19 h 10 min
Pouvez vous m’indiquer ou placer la div dans:
/app/design/frontend/default/blue/template/catalog/product/list.phtml
/app/design/frontend/default/blue/template/catalog/product/view.phtml
/app/design/frontend/default/blue/template/catalog/product/sales.phtml
/app/design/frontend/default/blue/template/catalog/product/new.phtml
Est ce normal de ne pas avoir de fichier Sales.phtml dans app/design/frontend/default/blue/template/catalog/product
Adeline
3 septembre 2010 à 14 h 09 min
Tu places la div où tu veux voir apparaitre la vignette. Souvent tu l’affiche après le libellé du produit.
Cependant, vu que le style css est en position ‘absolute’, tu peux mettre la div avant le libellé du produit.
Concernant le fichier sales.phtml, il dépend d’une extension. C’est donc normal si tu ne l’a pas.
Bonne intégration.
Silv3r
10 décembre 2010 à 9 h 33 min
Bonjour !
Juste une petite question ! Savez-vous si cette solution est compatible avec l’extension easy lightbox qui modifie les fiches produits sous magento ?
Adeline
10 décembre 2010 à 10 h 10 min
Oui sans problème, il faut juste reprendre le fichier ajouté ou modifié par easy lightbox.
Silv3r
16 décembre 2010 à 17 h 52 min
Merci ça marche impecable ! Je l’ai mis sur mon site en prod. Merci beaucoup pour ce tuto parfait !
Silv3r
25 février 2011 à 19 h 10 min
Je rencontre un problème mes étiquettes se mettent devant mes photos produits. Jusque là tout va bien sauf que du coup je n’ai plus les liens vers le fiches produits, les balises alt etc etc… Savez-vous comment faire pour résoudre ce problème ?