Développement de modules personnalisés Magento

Le développement de modules personnalisés Magento est une partie essentielle de tout développement ou projet Magento, car vous pouvez à tout moment intégrer votre propre fonctionnalité / module à votre projet Magento existant.. 

Dans cette série, je vais couvrir les détails du développement de modules personnalisés Magento..

Si vous voulez aller plus loin avec votre développement Magento, découvrez le large éventail d'extensions utiles de Magento sur Envato Market..

Extensions Magento sur le marché Envato

Dans toute cette série, je parle de Magento Community Edition 1.7, bien que les structures de module personnalisées soient les mêmes dans toutes les versions de Magento. Avant de commencer, nous allons commencer le développement de modules, comprenons rapidement la structure de base de Magento.. 

Chaque fois que vous installez un nouveau Magento, vous remarquerez la structure de répertoires Magento suivante:

Introduction à la structure de Magento MVC

Comme tout autre framework majeur tel que Joomla, CakePHP, CodeIgniter, etc., Magento suit également l’architecture basée sur MVC bien que cela soit un peu différent de l’architecture PHP MVC principale. Ici, j'expliquerai la différence d'architecture Magento en la comparant avec une architecture PHP MVC simple..

Architecture PHP MVC

Dans le modèle MVC typique, le flux de l'application ressemble à ceci:

  1. Il y a un point d'entrée principal - index.php - à partir duquel le mécanisme de routage complet de l'application est déterminé.
  2. Sur la base de ce mécanisme de routage et du modèle d'URL demandé, l'application appelle le contrôleur approprié..
  3. Le contrôleur appelle ensuite les vues appropriées.
  4. Enfin, les fichiers de vue collectent les données des fichiers de modèle et les affichent..

Architecture Magento MVC

L'architecture MVC de Magento ajoute quelques couches au motif MVC, mais le flux de contrôle de base d'une application est le suivant:

  1. Il y a un point d'entrée principal - index.php - à partir duquel toute l'application sera initialisée.
  2. Sur la base de l'URL demandée, le contrôleur approprié sera appelé. 
  3. Le contrôleur définit les pages et charge les fichiers de mise en page pour ces pages.
  4. Les fichiers de mise en forme indiquent aux contrôleurs les fichiers de blocage à utiliser..
  5. Les fichiers bloqués collectent les données des modèles et des fichiers helpers et les transmettent aux fichiers modèles.
  6. Les fichiers modèles reçoivent des données et rendent le code HTML.

Au début, cela peut être difficile à comprendre car il contient quelques couches supplémentaires. Pour vous familiariser avec le flux de contrôle, développons un module "Hello World" personnalisé.

Avant de commencer avec des modules

  • Je suppose que vous avez déjà une copie de travail de Magento avec la version 1.7 ou 1.7+ (sinon la version n'a pas d'importance à ce stade)
  • Désactiver le cache. Pour désactiver le cache Accédez au Panneau d'administration Magento> Système> Gestion du cache> Sélectionner tout le type de cache dans les cases à gauche> Sélectionner une action: désactiver du menu déroulant supérieur droit> cliquez sur Soumettre..

La structure d'un module Magento

Pools de codes

Magento contient trois types de pools de codes où résident tous les modules personnalisés et principaux de Magento.. 

  1. Les pools centraux contiennent tous les modules principaux fournis par défaut avec une installation Magento. Ces modules sont écrits par les développeurs Magento. Il est recommandé de ne pas modifier ces modules car chaque fois que vous mettrez à niveau votre installation de Magento, tous les modules principaux seront écrasés et vos modifications seront perdues..
  2. Les pools de communautés contiennent tous les modules, c'est-à-dire des modules personnalisés, développés par des programmeurs tiers pour être installés via Magento Connect. Ces modules étendent généralement les modules de base et offrent leurs propres fonctionnalités qui peuvent souvent être utilisées n’importe où dans Magento..
  3. Les pools locaux contiennent tous les modules personnalisés qui vont être utilisés pour un projet particulier mais ne sont pas lus dans Magento Connect.

Ainsi, nous avons deux choix de piscines: communautaires ou locales. Puisque nous travaillons sur notre propre projet, nous allons utiliser un pool local, même s'il n'y a pas de restriction d'utilisation du pool communautaire..

Structure

Les modules Magento comprennent les composants suivants:

  • Des blocs contient des fonctions permettant d'afficher des données dans des modèles.
  • Des modèles contenir la logique métier des modules.
  • Modèles de ressources contient des fonctions utilisées pour l'interaction de base de données.
  • Contrôleurs définit la mise en page et bloque les fichiers et est chargé lorsqu'une URL est demandée.
  • etc contient des fichiers de configuration aux formats XML qui indiquent à Magento le nombre de fichiers contenus dans les modules et leur interaction.
  • Aides contient des fonctions utilisées pour définir une logique métier commune (telle que le redimensionnement, la validation). Ces fonctions peuvent être utilisées n’importe où dans l’application Magento
  • sql contient des scripts SQL pour créer, modifier ou supprimer des tables SQL.

Nom du module

Nous devons donner un nom à notre module. Généralement, les noms de modules Magento sont composés de deux parties: _La meilleure pratique pour donner un nom à un module Magento est de choisir en tant qu'auteur ou nom de société et comme un nom de module réel.

Sur la base de ces conventions de nommage, je donne à notre module la Chiragdodia_Mymodule prénom. Nous ferons référence à ce nom tout au long de cette série.

Configuration du code et configuration

 Permet de créer les répertoires basés sur la structure ci-dessus. Accédez à la direction de votre installation Magento, puis accédez à app / code / local et créez les répertoires comme indiqué ci-dessous.

Ensuite, nous allons configurer et activer notre module en créant un fichier de configuration Chiragdodia_Mymodule.xml dans le app / etc / modulesannuaireCe répertoire contient les fichiers de configuration pour tous les modules.

    vrai local   

Ce fichier indiquera à Magento l'emplacement de notre module. dans le actif tag, nous avons spécifié vrai pour activer notre module. Si tout est correct jusqu'à présent, vous trouverez votre module dans la Panneau d'administration Magento> Système> Configuration> Avancé> Avancé> Désactiver la sortie des modules liste. De là, vous pouvez activer et désactiver votre module.

Mise en route: développement

Ensuite, nous allons créer notre fichier de configuration de module. Ce fichier informera Magento de notre module. Cela inclut le nombre de fichiers contenus dans notre module, le type de fichiers (modèles, aides, classes de base de données), etc..

Aller à app / code / local / Chiragdodia / Mymodule / etcet créer un config.xmlfichier qui contiendra le contenu suivant

    0.1.0       la norme  Chiragdodia_Mymodule mymodule      

Passons ligne par ligne pour comprendre chaque tag. Ici, la première balise est qui contient le nom et la version de notre module. Le numéro de version est très important pour la mise à jour de votre module.

le La balise indiquera à Magento le contrôleur envoyé. À l'intérieur de  tag, nous avons défini qui indique à Magento comment accéder à nos contrôleurs via le mécanisme de routage. 

dans le  tag, nous avons défini le nom du module dans balise et nom de l'interface dans . En utilisant un nom d’interface, nous pouvons accéder à notre module en interface comme votrenomsite.com/index.php/mymodule/index.

En appelant votrenomsite.com/index.php/mymodule ou votrenomsite.com/index.php/mymodule/index Magento recherchera une action d'index du fichier de contrôleur de votre module. En tant que tel, nous devons créer notre fichier de contrôleur.

Aller à  app / code / local / Chiragdodia / Mymodule / contrôleurset créer un fichier IndexController.phpavec le contenu suivant.

Notez que le nom de chaque fichier et les noms de classe sont sensibles à la casse dans Magento. Il est très important que vous preniez soin de nommer votre travail lors de la création de fichiers et de classes..

Maintenant ouvrir l'URL votresite.com/index.php/mymodule/indexil va imprimer "Bonjour tuts + monde". Génial - nous avons enfin terminé notre premier module hello world.

Contrôleur Dispatch

Ici nous avons étendu la classeMage_Core_Controller_Front_Actionqui contient toutes les méthodes qui utilisent dans le routage de l'URL. Le nom de la classe Magento reflète l'emplacement du fichier de classe. Alors la classe Mage_Core_Controller_Front_Actionréside dans l'emplacement Mage> Noyau> Contrôleur> Avant> Action.php

Voir le nom de classe de notre contrôleur qui est Chiragdodia_Mymodule_IndexController. Le contrôleur Magento doit être nommé de manière à refléter (balise) _ (Action Controllername) (mot clé Controller).

  • tag = Chiragdodia_Mymodule (nous avons défini cette balise dans config.xml)
  • action Nom de contrôle = Index
  • Contrôleur d'action suivi du Manette mot-clé 

Sur la base de ce modèle, le nom de notre contrôleur est Chiragdodia_Mymodule_IndexController

Maintenant, voyez le modèle d'URL qui suit le modèle de route ci-dessous.
yoursite.com/index.php/frontendname/actionControllername/actionmethod

  • frontendname = mymodule
  • actionControllername = Index
  • actionmethodname = Index

Basé sur ce modèle d'URL, l'URL de notre module est yoursite.com/index.php/mymodule/index/index. Vous pouvez également y accéder en utilisant yoursite.com/index.php/mymodule parce que chaque fois que vous n'avez pas spécifié un actionController ou méthode d'action name, Magento charge le contrôleur d'index et l'action d'index par défaut.

Créons maintenant une action supplémentaire: testAction .

Nous pouvons accéder à testAction en utilisant l'URL yoursite.com/index.php/mymodule/index/test.Comme expliqué plus tôt ici

  • frontendname = mymodule
  • actionControllername = Index
  • actionmethodname = test

Voici comment fonctionne le contrôleur dans Magento.

Au début, il peut être difficile de tout comprendre en même temps, c'est pourquoi j'ai inclus tout le code source dans ce module afin que vous puissiez le réviser et mettre en œuvre votre propre travail tout en l'utilisant comme guide..

Et après?

Dans la partie suivante, nous allons compléter certaines dispositions de notre module en créant des fichiers de présentation et de blocage. Nous comprendrons le fonctionnement des fichiers de mises en page dans Magento et le rôle joué par les blocs dans le contexte de Magento..

Jusque-là, créez votre propre module et informez-moi de tout ce qui vous cause des problèmes.

Besoin d'aide supplémentaire?

Si vous ne savez toujours pas comment procéder après avoir lu ce didacticiel, essayez de contacter l'un des développeurs de Magento sur Envato Studio. Ils peuvent vous aider avec toutes sortes de problèmes Magento, petits et grands. Voici quelques exemples:

1. Tout-en-un Magento (développement / personnalisation de site complet)

Obtenez une configuration de site Web Magento ou demandez une personnalisation avancée telle que:

  • modification de la mise en page 
  • modification des curseurs 
  • menu personnalisé 
  • résoudre les problèmes sensibles 
  • et plus

2. Développement de modules Magento et développement de sites

Ce fournisseur effectuera l'une des opérations suivantes:

  • développer un module personnalisé
  • installer un thème Magento
  • personnaliser avec votre design d'identité (logo, couleur, police, arrière-plan) 
  • créez vos 20 premières catégories / sous-catégories 
  • configurer les paiements et les monnaies locales 
  • et plus

3. Personnalisation du thème Magento

Obtenez votre thème Magento personnalisé à un prix raisonnable en seulement une journée.

4. Développement de thèmes Magento, Installation, extensions et travail à façon

Ce fournisseur propose une gamme de services Magento, notamment:

  • développement web personnalisé Magento 
  • Sites Magento réactifs 
  • développement de thèmes Magento personnalisés 
  • développement de modules 
  • développement du panier 
  • intégration de passerelle de paiement sécurisée

Si ces solutions ne vous conviennent pas, essayez l'une des dizaines d'autres disponibles sur Envato Studio..