Utilisation des classes Proxy Magento 2

 

Magento 2 utilise le principe d'injection de dépendances comme alternative à la classe finale Mage de Magento 1. Cela veut dire que si une classe A dépend du service B, B doit être injecté directement dans le constructeur de A, ce n'est plus à A de récupérer la dépendance B au moment où il en a besoin.

Cela implique inévitablement que B doit être instancié avant d'être injecté dans A. Cela n'a rien de problématique en soi, par contre imaginons que l'instanciation de B soit relativement lourde en terme de ressource et que B possède également des dépendances, qui elles-mêmes possèdent des dépendances, qui elles-mêmes... Vous l'aurez compris, cela peut commencer à devenir non négligeable, surtout (et c'est là que la problématique devient intéressante) si A a besoin de B uniquement dans certaines conditions (selon l'état d'une variable, l'état d'un service, le calcul d'un résultat, ou autre), l'instanciation de B devient donc inutile si A n'en a jamais besoin. Les classes de type Proxy sont présentes pour répondre à cette problématique.

Mise en place d’un thème Magento 2

Magento 2 intègre un système de thème puissant. Pour rappel, selon  le glossaire Magento, un thème contient des informations graphiques et d'apparence. Il permet de personnaliser le magasin à l'image de la marque.

Je sous propose de suivre la mise en place d'un thème et d'avoir un aperçu de certaines notions essentielles du système de thème utilisé par Magento 2.

Magento permet de disposer de thèmes installables via des packages composer, mais également de créer ses propres thèmes via app/design.

Les thèmes sont destinés à surcharger / étendre les ressources des vues, initialement utilisées par des modules et librairies.

Magento 2 intègre de base deux thèmes : Luma, un thème de démonstration déjà bien personnalisé, et blank, qui sert  de base à la création d'un thème custom, mais intégrant des éléments indispensables, comme la gestion du responsive.

Theme Luma.

Akeneo et Magento 2 : comment les faire communiquer ?

Akeneo est un PIM, un Product Information Manager. Il s'agit d'une solution servant à collecter l'ensemble des données catalogue d'une entreprise. Il permet également de faciliter la diffusion multicanal. Pour un vendeur disposant d'une boutique de vente en ligne, Akeneo peut s'avérer très utile pour simplifier la gestion de son catalogue. Dans le cas d'une gestion manuelle, l'interface réactive d'Akeneo permet une grande rapidité de traitement des informations catalogue. Si les données proviennent d'un ERP, la mise en place d'imports automatiques est grandement simplifiée. Cet article présente une manière de faire communiquer un ERP et Magento 2 via le PIM Akeneo, et ce, automatiquement, par la mise en place de tâches Cron.

Ajouter un nouveau type de produit dans Magento 2

magento2

Magento dispose de nombreux types de produit qui permettent de générer des catalogues complets et adaptés aux besoins des vendeurs. Il en est de même pour la version 2 de la solution E-Commerce.

Si chaque type définit un comportement et des attributs qui lui sont propres, il est parfois nécessaire de créer un nouveau type afin de répondre à de nouveaux besoins.

Cet article décrit comment déclarer un nouveau type de produit et comment lui associer un comportement qui lui est propre. Le code est basé sur la version 2.1.2 de Magento.

Le Full Page Cache (FPC) de Magento 2

 magento2

Le Full Page Cache (FPC) est un élément important à prendre en compte lors du développement d'un site quel qu'il soit afin d'en améliorer nettement les performances. L'arrivée de Magento 2 apporte une gestion native du FPC dans la version Community Edition (CE) lorsque Magento 1 ne le proposait que dans la version Enterprise Edition (EE). Il est possible d'utiliser le Full Page Cache avec un des mécanismes suivants :

  • le système de fichier,
  • la base de données,
  • Redis,
  • Varnish.

Magento 2 et les Virtual Types

magento_logo

Un "type virtuel" est un mécanisme de l'injection de dépendances de Magento 2. Il permet de changer les arguments d'un constructeur d'un objet spécifique, donc de gérer ses dépendances, sans affecter les autres classes qui ont elles-même une dépendance à cet objet. Dans les faits un virtual type n'est rien d'autre qu'une classe étendant une autre classe.

Il ne faut cependant pas interpréter un virtual type comme étant un moyen de surcharger une classe en modifiant l'une ou l'autre fonction de la classe étendue. Le virtual type n'est pas voué à changer le comportement d'un objet, mais seulement ses dépendances.