Surcharger un block dans magento

Une fonctionnalité de magento vous convient mais n’est pas aussi aboutie que vous le souhaitez? ou encore votre client souhaite un rendu différent? Nous allons étudier la procédure dans cet article.


Tout d’abord je vous invite à vous rendre dans le back office dans system configuration developper puis de choisir le niveau main website. Passez à Yes les options template path Hints et add block names to hints puis sauvegarder et purger les caches. Vous verrez apparaître les nom des fichiers de templates et block correspondants sur vos pages en frontend comme le monte la capture d’écran suivante :


Nous allons ici modifier le contenu du block Stock:

frontend/base/default/template/catalog/product/view/type/default.phtml

Mage_Catalog_Block_Product_View_Type_Simple

?Mettre en place la surcharge dans le config.xml 

 Imaginons que votre namespace est valibus et que votre module s’appelle showstock

<global>
<blocks>
<showstock><class>Valibus_Showstock_Block</class></showstock>
<catalog>
<rewrite>
<product_view_type_simple>Valibus_Showstock_Block_Product_View_Type_Simple</product_view_type_simple>
</rewrite>
</catalog>
</blocks>
</global>

Comme vous le voyez on commence par déclarer l’emplacement des classes de block dans notre module, puis la surcharge ou héritage dans le module.

Pour comprendre la syntaxe de la réécriture c’est simple, on déclare d’abord le nom du module réécrit, on indique la balise rewrite puis entre les balises qui contiennent le nom du block du module d’origine ( <product_view_type_simple> ) on indique le nom de notre classe qui contient la réécriture.

?Extension de la classe block du Core

Le plus simple (et plus cohérent) ici est de créer une arborescence identique à l’origine dans notre module, de plus, c’est évolutif au cas on aurait besoin de surcharger d’autres classes du même module.

<?php
class Valibus_Showstock_Block_Product_View_Type_Simple extends Mage_Catalog_Block_Product_View_Type_Simple {
public function checkOverStock() {
$product= $this->getProduct();
if($product->getStockItem()->getQty()>20){
return true;
}
return false;
}
}

Ici rien d’extraordinaire on définit juste une fonction qui teste si il y a plus de 20 item en stock, on peut la mettre en application en modifiant le template ainsi :

<?php if($this->checkOverStock()): ?>
<ul class="messages">
<ul>
<li>Beaucoup de stocks disponibles !</li>
</ul>
</ul>
<?php endif;?>
Christophe Vidal vous répond
Christophe Vidal vous répondAssocié et directeur commercial – sous 48h ouvrées
+300 clients depuis 2017

Votre pré-audit Magento offert

Technique, performance, SEO, Paid : un expert analyse votre site et vous rappelle avec des propositions concrètes.

Gratuit et sans engagement

+234%de CA en 2 ans
+45%de ventes
6langues

Migration Magento 2 pour les marques du Groupe Blanchon, PIM et ERP synchronisés, catalogue servi en 6 langues. Refonte technique, reprise du SEO et accompagnement continu : le site absorbe la saisonnalité sans incident.

62pays
4langues
57partenaires dans le monde

Le projet de refonte de notre site web nécessitait l’accompagnement d’un expert du développement Magento, de l’UX design et de référencement. Nous avons trouvé ces trois caractéristiques.

Annabelle Meli — Responsable marketing digital chez Enlaps.io
102 000pages vues dans les 48h après l’ouverture
31matchs différents

Pour la billetterie de la Coupe du Monde de Rugby 2023, nous avons conçu une plateforme Magento sur-mesure capable de gérer des flux de dizaines de milliers d'utilisateurs en simultané. Nous avons transformé des défis techniques complexes en une solution agile et performante, optimisée dès sa conception par notre expertise SEO.

410-gone, je vous recommanderai sans hésiter pour la proximité, la réactivité, l’enthousiasme et le côté humain sur chaque projet.

Lucas Chevalier — Responsable Digital chez Couleur
502 M€Chiffre d’affaires consolidé
8sites Magento en production
+900salariés

410-Gone, c’est une équipe compétente, qui sait s’adapter aux besoins spécifiques de ses clients et qui apporte des solutions efficaces, notamment en SEO et sur Magento. Leur support nous a permis d’évoluer et d’optimiser nos sites au fil du temps.

Jérémy Diguet-Dickson — Responsable Digital – Thermador Groupe
1 / 4