Comprendre le dépassement dans Magento Modèles

Dans cette série, nous explorons les principales fonctionnalités disponibles dans le système de commerce électronique Magento. Dans l'article précédent, nous avons expliqué comment remplacer les fichiers de bloc principaux à l'aide d'un module personnalisé. Aujourd'hui, je vais l'étendre et montrer comment vous pouvez remplacer des fichiers de modèle principaux à l'aide d'un fichier de configuration basé sur XML..

Pourquoi passer outre aux modèles??

Dans Magento, les modèles jouent un rôle important dans la mesure où ils implémentent la majeure partie de la logique métier des fonctionnalités de base. Il est parfois nécessaire de modifier le flux ou la logique métier dans les modèles pour implémenter vos fonctionnalités personnalisées.. 

Il est tentant de modifier directement les fichiers de base, ce qui semble être une solution simple et facile. Cela dit, c’est une mauvaise pratique, car cela rend vraiment difficile la mise à niveau de Magento. Plus vous modifiez directement les fichiers principaux, plus il devient difficile pour vous de suivre vos modifications et de les appliquer à chaque mise à niveau de version.!

Dans ce didacticiel, nous allons créer un module personnalisé pour comprendre le fonctionnement du remplacement de modèle dans Magento. Dans ce module personnalisé, nous verrons comment remplacer une classe de modèle de catégorie du module principal "Catalogue". 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. Sinon, voici un bon article expliquant les bases de la création de modules personnalisés. Passons directement au cours de ce tutoriel!

Un coup d'œil sur la configuration

Voici la 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 la classe de modèle en utilisant certaines balises, conformément aux conventions de Magento..
  • app / code / local / Envato / Catalogue / Modèle / Catégorie.php: C'est une classe de modèle de notre module personnalisé qui remplacera la classe de modèle de base.

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_Model_Category     

Premièrement, nous avons défini un numéro de version de module en utilisant le  étiquette. Après cela, le  et les balises sont utilisées pour informer le système dominant de Magento que nous allons remplacer un "modèle" du module principal "Catalogue".

Ensuite, le  La balise est utilisée pour définir une identité de modèle qui sera remplacée par la Envato_Catalog_Model_Category classe. Il est associé à un fichier de modèle "Category.php" dans le répertoire "Model" du module Catalogue. Une 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 vaut mieux utiliser une structure de répertoires différente, car cela permet de maintenir la lisibilité..

Enfin, il ne reste plus qu’à définir une classe de modèle Envato_Catalog_Model_Category. Créons un fichier de modèle "app / code / local / Envato / Catalogue / Model / Category.php" et collez le contenu suivant dans ce fichier.

setStoreId ($ this-> getStoreId ()) -> addCategoryFilter ($ this); return $ collection; 

Nous avons défini un Envato_Catalog_Model_Category classe qui étend le noyau Mage_Catalog_Model_Category classe de modèle du module "Catalogue". 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 getProductCollection La méthode est remplacée, elle sera appelée à la place de la méthode définie dans la classe de modèle principale! Vous pouvez modifier le code du modèle selon vos besoins. 

Lorsque vous substituez des méthodes dans des modèles, vous devez vous assurer que le type de données de la valeur de retour de cette méthode correspond au type de données de la méthode de classe de base. Puisque les méthodes de modèle sont appelées à partir de plusieurs modules principaux, nous devons nous assurer que cela ne casse pas d'autres fonctionnalités.!

Bien qu’il s’agisse d’un exemple très simple, il permet de remplacer le modèle principal et vous pouvez l’étendre selon vos besoins..

Conclusion

Dans ce didacticiel, nous avons appris à remplacer des fichiers de modèle principaux dans Magento à l'aide d'un module personnalisé. Dans la dernière et dernière partie de cette série prioritaire, nous verrons comment remplacer les fichiers de contrôleur principaux. N'hésitez pas à laisser vos commentaires ci-dessous!