Créer un widget custom dans Magento 2 peut être utile, notamment car cette solution permet de placer un bloc statique de manière beaucoup plus sélective (on peut cibler une catégorie unique du catalogue par exemple) et depuis l’interface d’admin.

Dans ce billet:

Créer un widget custom dans Magento 2

Je me suis inspiré de la doc officielle et d’un autre tuto pour arriver à mes fins, la doc officielle étant incomplète et les exemples de code erronés!

On part du principe qu’on crée un widget pour le vendor Sodifrance et le module Pdv.

Initialiser le widget

app/code/Sodifrance/Pdv/etc/widget.xml

Créer un template pour le widget

app/code/Sodifrance/Pdv/view/frontend/templates/widget/test.phtml

Créer un block pour le widget

app/code/Sodifrance/Pdv/Block/Widget/Test.php

Ajouter une dépendance au module Magento_Widget dans le fichier module.xml

app/code/Sodifrance/Pdv/etc/module.xml

Commandes à exécuter

Appliquer la dépendance de module déclarée dans le fichier module.xml:

Flusher les caches:

Accès BO à votre widget custom

  • Contenu > Widgets > Ajouter un widget
  • Choisir le type de widget dans la liste déroulante: « Test Widget »

Pour afficher un widget dans une seule catégorie du catalogue:

  • Contenu > Widgets > Ajouter un widget
  • Choisir le type de widget et le thème de design
  • Remplir les champs obligatoires de la section « Propriétés du front office »
  • Dans la section « Mises à jour d’agencements » > Ajouter une mise à jour d’agencements
  • Display on: catégorie ancrée
  • Catégories: Spécifique à Categories
  • Cliquer sur l’icône « Ouvrir le sélecteur »
  • Déplier l’arbre de catégories/sous-catégories et cocher la ou les catégories dans laquelle le widget doit s’afficher; il ne s’affichera pas dans les autres

Ajouter un bloc statique dans un widget custom Magento 2

[Magento 2] Inclure un bloc statique depuis un champ WYSIWYG (nouvelle fenêtre).

Une liste de ressources en ligne intéressantes sur le sujet

Dépôts Git de démonstration, proof of concepts, etc …

  • Magento 2: Widgets – This module is to demonstrate the different fields available for Magento 2 widgets. The idea is to use this as a base or reference for creating your own widgets. There is an example widget provided which has all the possible field types available.

Tutoriels

  • inchoo.net – Magento 2 custom widget. Now we will see how we can create a custom one, or even better, how to extend the core one. For this example I picked default catalog product listing widget that I will extend with sorting fields for better customization of this widget.