Recherche…


Remarques

Les modules existent pour être étendus. Vous ne pouvez pas modifier the app/code/ fichiers sans interdire les futures mises à jour. Au lieu de cela, nous ajoutons un module au répertoire app/code/local (le répertoire local est peut-être manquant, si c'est le cas, il doit être créé manuellement. Ceci est courant dans les versions ultérieures de Magento) pour ajouter des fonctionnalités locales personnalisées.

Tous les fichiers de configuration du module commencent par une <config> . Le nouveau module est déclaré à l'intérieur de la <modules> . Nous appellerons un module nommé YOUR_COMPANY_HelloWorld, par conséquent les balises <YOUR_COMPANY_HelloWorld> sont utilisées. Ici nous définissons la version (très premier = 0.0.1)

Une liste des événements XML peut être trouvée à l' adresse suivante : http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml

Si vous rencontrez des problèmes, consultez la page: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/

Créer un module à partir de rien (Hello World)

Le développement de modules personnalisés Magento fait partie intégrante de tout projet de développement Magento ou Magento, car à tout moment, vous souhaiterez peut-être intégrer vos propres fonctionnalités / modules dans votre projet Magento existant.

La première chose que les développeurs doivent désactiver est le cache du système. Sinon, le développement deviendra douloureux car tout changement nécessitera une couleur. Depuis le panneau d'administration de magento: accédez à System > Cache Management > Select All > Actions : Disable. Utilisez le guide suivant pour créer un nouveau module:

  • Créez un dossier dans app/code/local/ - les conventions de dénomination prennent généralement le nom de votre entreprise, par exemple app/code/local/<YOUR_COMPANY> .

  • Nous avons maintenant un emplacement personnalisé pour nos modules. Créez un autre répertoire, appelez-le quelque chose en rapport avec le type de module que vous souhaitez créer, par exemple app / code / local / <VOTRE_COMPANY> / HelloWorld / - «HelloWorld» est ce que j'appellerai ce module.

  • Ce répertoire nécessite un config.xml afin que Magento le reconnaisse comme un nouveau module. Créez un autre dossier nommé etc Suivi d'un fichier XML appelé config.xml. Le répertoire devrait ressembler à app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml Voici la structure du fichier xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>
             <version>0.0.1</version>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • Ensuite, les modules doivent être déclarés à Magento. Passez à l' app/etc/modules . Créez un autre document XML et donnez-lui les noms choisis de vos tags: YOUR_COMPANY_HelloWorld dans mon cas. Dans ce document, écrivez:

    <?xml version="1.0" encoding="UTF-8"?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>   
             <!-- Whether our module is active: true or false -->
             <active>true</active>
             <!-- Which code pool to use: core, community or local -->
             <codePool>local</codePool>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • Là encore, les balises de configuration et de module sont utilisées pour déclarer un nouveau module à Magento. Active est la valeur par défaut accessible dans le Admin Panel under System > Configuration > Advanced . codePool indique à Magento le répertoire à rechercher. local dans notre cas

  • Ce module a été mis en place, donc le modèle de notre structure MVC. Vous devriez pouvoir voir votre nouveau module dans le Panneau d'administration sous System > Configuration > Advanced . Cependant, il ne fait encore rien! Vous devrez revenir à notre fichier config.xml et définir des éléments XML.

  • Suite au tutoriel; Nous utiliserons certains de ces éléments XML pour créer des classes et manipuler toutes les pages du frontend de notre site. Retour au fichier config.xml écrivez ce qui suit sous la </modules> :

    <global>
       <!-- adding a new block definition -->
       <blocks>
           <!-- A unique short name for our block files -->
           <helloworld>
              <!-- the location of our modules block -->
              <class>YOUR_COMPANY_HelloWorld_Block</class>
           </helloworld>
       </blocks>
    </global>
    <!-- We are making changes to the frontend -->
    <frontend>
       <!-- We are making changes to the layout of the front end -->
       <layout>
          <!-- we are adding a new update file -->
          <updates>
             <!-- Creating the name of our update and linking it the module -->
             <helloworld module="YOUR_COMPANY_HelloWorld">
                 <!-- The name of the layout file we are adding -->
                 <file>helloworld.xml</file>
             </helloworld>
         </updates>
      </layout>
    </frontend>
    
  • Comme vous pouvez le constater, nous étendons constamment plutôt que de manipuler les fichiers de base. La balise helloworld est en minuscule car cela helloworld une poignée, et pour plus de continuité, nous la nommerons aussi étroitement que possible. Nous YOUR_COMPANY_HelloWorld ensuite cela au module YOUR_COMPANY_HelloWorld .

  • Nous changeons la mise en page. Par conséquent, nous devons créer cette poignée dans le répertoire de disposition. passez à app/design/frontend/base/default/layout . Nous avons demandé au module de rechercher le fichier helloworld.xml . Par conséquent, nous devons le créer dans ce répertoire. Qu'est-ce que tu attends. Fais le!! et le remplir avec:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- All Layout files begin with this code -->
    <layout>
       <!-- this is the layout handle. Default is handled on all pages. We want this module to execute on all pages -->
       <default>
          <!-- This is the block we want to bolt onto the existing before_body_end block -->
          <reference name="before_body_end">
              <!-- We define our new block and template to be added to before_body_end -->
              <block name="helloworld_footer" template="helloworld/footer.phtml" type="helloworld/footer"/>
          </reference>
       </default>
    </layout>
    
  • Maintenant, ceux d'entre vous qui ont une petite expérience de Magento, ou qui ont lu d'autres didacticiels Magento, peuvent être découragés de constater que nous apportons des modifications à la base / par défaut, car c'est là que se trouvent les fichiers core Magento. Cependant, nous ne modifions aucun fichier ici, nous en créons de nouveaux, et nous préfixons également notre nom de fichier avec «helloworld». Il y a donc très peu de chance que cela entre en conflit avec d'autres modules ou que Magento soit mis à jour. avenir. Jours heureux!

  • Comme nous voulons affecter toutes les pages, nous utilisons la balise par défaut et la before_body_end bloc structurel before_body_end . Cela va jouer le rôle de l'action et déclencher la section View de notre structure MVC.

  • Maintenant, nous comprenons que nous nous before_body_end sur le bloc before_body_end . et le reliant à notre bloc personnalisé. Ceci est appelé une référence et est un crochet . Nous ne le connectons actuellement à rien d’existant, nous devons donc créer les fichiers nécessaires.

  • Dans helloworld.xml nous avons indiqué dans le modèle un footer.phtml . Passez à app/design/frontend/base/default/template et créez un répertoire helloworld .

  • Dans ce répertoire, créez le fichier footer.phtml et remplissez-le avec HTML, ce tutoriel écrit simplement ceci pour afficher certaines fonctionnalités de PHP liées à notre fichier PHTML:

    <p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
    
  • Nous devons maintenant créer notre propre objet bloc pour coupler le modèle avec notre fonctionnalité de bloc. Créez le répertoire app / code / local / YOUR_COMPANY / HelloWorld / Block / et créez le fichier Footer.php intérieur de celui-ci. Cela a été référencé dans notre zeta_layout.xml dans le type "helloworld / footer". Remplissez ce fichier avec:

    <?php
    class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template {
       public function getDate() {
          $date = date('Y-m-d');
          return urlencode($date);
       }
    }
    ?>
    
  • C'est la fonctionnalité qui remplira notre appel getDate() appelé depuis notre fichier .phtml . Nous étendons le Mage_Core_Block_Template .

  • Cette fonctionnalité est maintenant terminée. Testez-le en allant sur votre page d'accueil où vous devriez voir votre module dans le bas de chaque page!



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow