Comprendre le dépassement dans Magento Blocs

C'est toujours une fonctionnalité importante pour tout framework qui supporte l'extensibilité et l'évolutivité dans le noyau même. C'est tellement vrai pour Magento, qui permet aux programmeurs de créer des extensions personnalisées pour répondre aux exigences personnalisées, offrant ainsi une extensibilité. D'autre part, il vous permet également de remplacer les fichiers de base pour modifier le flux et le comportement des fonctionnalités de base de Magento..

Dans Magento, il existe différentes manières d’autoriser le remplacement des fichiers de base. L'un d'eux est la mise en œuvre du modèle Event Observer. À l'aide de cette méthode, vous définissez des observateurs dans votre module pour les événements souhaités. Ils sont ensuite récupérés lorsque les événements associés sont déclenchés dans Magento. C'est certainement un moyen puissant et standard pour intégrer vos modifications aux modules de base de Magento. Cela dit, il y a des situations dans lesquelles vous penserez que ce serait bien si vous pouviez simplement remplacer les extraits de fichiers principaux par vos extraits. Vous pouvez le faire en utilisant un fichier de configuration XML dans votre module personnalisé..

Pourquoi écraser des blocs?

Dans Magento, les blocs sont des composants de construction primitifs pour toute mise en page dans le frontal. Bien que vous puissiez remplacer le fichier de modèle de n'importe quel bloc en utilisant un thème personnalisé pour modifier la sortie visuelle, vous souhaitez parfois modifier la logique du code de bloc principal. Dans ce cas, écraser un bloc central avec le fichier de bloc de votre module personnalisé aide vraiment à intégrer vos modifications. facilement.

Dans ce didacticiel, nous allons créer un module personnalisé pour comprendre le fonctionnement des substitutions de blocs dans Magento. Dans le module personnalisé, nous allons remplacer un bloc de liste de produits affiché dans la vue de page de catégorie. Remplacer fonctionne en configurant certaines balises XML selon les conventions de Magento.

Je suppose que vous connaissez le processus de création de modules de base dans Magento. Voici un bel article expliquant les bases de la création de modules personnalisés, juste au cas où vous souhaiteriez le consulter! Passons tout de suite au contenu de ce tutoriel!

Un coup d'œil sur une installation

Nous allons créer un module personnalisé simple appelé "Catalogue", qui définit le remplacement du bloc principal de liste de produits (app / code / core / Mage / Catalogue / Block / Catégorie / View.php) dans la vue de page de catégorie. Voici une liste des fichiers requis pour la configuration souhaitée:

  • app / etc / modules / Envato_All.xml: c'est un fichier utilisé pour activer notre module personnalisé.
  • app / code / local / Envato / Catalogue / etc / config.xml: Il s'agit d'un fichier de configuration de module dans lequel nous allons configurer le remplacement de bloc à l'aide de certaines balises, conformément aux conventions Magento..
  • app / code / local / Envato / Catalogue / Block / Catégorie / View.php: C'est notre nouveau fichier de bloc qui remplacera un fichier de bloc principal.

Création de fichiers et de dossiers: module personnalisé

Tout d'abord, nous devons créer un fichier d'activation de module. Créez un fichier "app / etc / modules / Envato_All.xml" et collez le contenu suivant dans ce fichier. Nous avons utilisé Envato comme notre espace de noms de module et Catalogue comme nom de notre module. Cela activera notre module Catalogue par défaut.

    vrai local   

Ensuite, nous devons créer un fichier de configuration de module. Créez "app / code / local / Envato / Catalogue / etc / config.xml" et collez le contenu suivant dans ce fichier..

    1,0       Envato_Catalog_Block_Category_View     

Au début du module, nous avons défini le numéro de version du module à l'aide du  étiquette. Après cela, le  et les balises sont utilisées pour informer le système dominant de Magento que nous allons remplacer l'un des "blocs" du module principal "Catalogue".

De plus, le  La balise est utilisée pour définir une identité de bloc qui sera remplacée par la Envato_Catalog_Block_Category_View classe. Il est mappé sur un fichier de bloc "Category / View.php" sous le répertoire "Block" du module Catalogue. La chose importante à noter ici est que nous suivons une structure de répertoire similaire au module principal. Bien que cela ne soit pas strictement nécessaire, il est préférable de conserver la lisibilité sur la structure de répertoires différente..

Enfin, il ne reste plus qu’à définir une classe de bloc Envato_Catalog_Block_Category_View. Créons un fichier bloc "app / code / local / Envato / Catalogue / Block / Catégorie / View.php" et remplissons-le en utilisant le contenu suivant.

getChildHtml ('liste_produits'); 

Nous avons défini le Envato_Catalog_Block_Category_View classe qui étend le noyau Mage_Catalog_Block_Category_View classe de bloc. Ainsi, vous pouvez surcharger chaque méthode de la classe de base et en créer de nouvelles si nécessaire.

Dans l'exemple ci-dessus, le getProductListHtml La méthode est remplacée, elle sera appelée dans la page de catégorie! Vous pouvez modifier le code selon vos besoins.

Bien que ce soit un exemple très simple, il sert à remplacer le bloc principal et vous pouvez le modifier pour rendre les choses plus complexes et créer quelque chose de plus utile.!

Conclusion

Aujourd'hui, dans le premier article de cette série, nous avons appris à remplacer les blocs principaux de Magento. Dans la partie suivante, je proposerai des trucs plus excitants! J'aimerais entendre vos commentaires et vos questions dans le flux ci-dessous.!