Suche…


Bemerkungen

Module müssen erweitert werden. Sie können the app/code/ Dateien nicht ändern, ohne zukünftige Updates zu verbieten. Stattdessen fügen wir dem app/code/local Verzeichnis ein Modul hinzu (das lokale Verzeichnis kann fehlen, falls ja, muss es manuell erstellt werden. Dies ist in späteren Versionen von Magento üblich), um benutzerdefinierte lokale Funktionen hinzuzufügen.

Alle Konfigurationsdateien des Moduls beginnen mit einem <config> -Tag. Das neue Modul wird im <modules> -Tag deklariert. Wir rufen ein Modul mit dem Namen YOUR_COMPANY_HelloWorld auf, daher werden die <YOUR_COMPANY_HelloWorld> -Tags verwendet. Hier definieren wir die Version (allererste = 0.0.1)

Eine Liste mit XML-Ereignissen finden Sie unter: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml

Wenn Sie Probleme haben, besuchen Sie die Website http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/

Ein neues Modul erstellen (Hello World)

Die Entwicklung von Magento-Custom-Modulen ist ein zentraler Bestandteil von Magento-Entwicklungs- oder Magento-Projekten, da Sie zu jedem Zeitpunkt Ihre eigene Funktionalität / Ihr eigenes Modul in Ihr bestehendes Magento-Projekt integrieren möchten.

Das erste, was Entwickler deaktivieren sollten, ist der Systemcache. Andernfalls wird das Entwickeln zu einem Schmerz, da jede Änderung einen Flush erfordert. Navigieren Sie im Magento- System > Cache Management > Select All > Actions : Disable. zu System > Cache Management > Select All > Actions : Disable. auswählen System > Cache Management > Select All > Actions : Disable. Verwenden Sie die folgende Anleitung, um ein neues Modul zu erstellen:

  • Erstellen Sie einen Ordner in app/code/local/ - Benennungskonventionen tragen normalerweise den Namen Ihres Unternehmens, z. B. app/code/local/<YOUR_COMPANY> .

  • Jetzt haben wir einen benutzerdefinierten Ort für unsere Module. Erstellen Sie ein anderes Verzeichnis, nennen Sie es etwas, das mit dem Typ des Moduls zusammenhängt, das Sie erstellen möchten, z. B. app / code / local / <YOUR_COMPANY> / HelloWorld / - "HelloWorld" nenne ich dieses Modul.

  • Dieses Verzeichnis benötigt eine config.xml damit Magento es als neues Modul erkennt. Erstellen Sie einen anderen Ordner namens etc Gefolgt von einer XML-Datei namens config.xml. Das Verzeichnis sollte wie app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml aussehen: app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml Dies ist die Struktur der XML-Datei:

    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>
             <version>0.0.1</version>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • Als nächstes müssen Module für Magento deklariert werden. Fahren Sie mit app/etc/modules . Erstellen Sie ein anderes XML-Dokument, und geben Sie ihm die Namen Ihrer Tags: in meinem Fall YOUR_COMPANY_HelloWorld . In diesem Dokument schreiben Sie:

    <?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>
    
  • Auch hier werden mit config und module Tags ein neues Modul für Magento deklariert. Aktiv ist der Standardwert, auf den im Admin Panel under System > Configuration > Advanced zugegriffen werden kann. codePool teilt Magento mit, in welchem ​​Verzeichnis in unserem Fall local codePool werden soll

  • Dieses Modul wurde nun eingerichtet, also das Modell unserer MVC-Struktur. Sie sollten Ihr neues Modul in Admin Panel unter System > Configuration > Advanced . Es tut aber noch nichts! Sie müssen zu unserer Datei config.xml zurückkehren und XML-Elemente definieren.

  • Weiter mit dem Tutorial; Wir werden einige dieser XML-Elemente verwenden, um Klassen zu erstellen und alle Seiten im Frontend unserer Site zu bearbeiten. Zurück zur Datei config.xml schreiben Sie Folgendes unter dem Tag </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>
    
  • Wie Sie sehen, erweitern wir ständig die Kerndateien, anstatt sie zu bearbeiten. Das helloworld Tag ist in Kleinbuchstaben geschrieben, da dies auf einen Handle helloworld , und aus helloworld Kontinuität werden wir es so genau wie möglich benennen. Diese verknüpfen wir dann mit dem Modul YOUR_COMPANY_HelloWorld .

  • Wir ändern das Layout. Deshalb müssen wir diesen Handle im Layoutverzeichnis anlegen. Fahren Sie mit app/design/frontend/base/default/layout . Wir haben dem Modul gesagt, dass es nach der Datei helloworld.xml suchen helloworld.xml . Deshalb müssen wir es in diesem Verzeichnis erstellen. Worauf wartest du. TU es!! und bevölkere es mit:

    <?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>
    
  • Diejenigen von Ihnen, die ein wenig Erfahrung mit Magento haben oder andere bemerkenswerte Magento-Tutorials gelesen haben, können jetzt nach Luft schnappen, weil wir Änderungen an der Basis / Standardeinstellung vornehmen, da sich hier Magento-Kerndateien befinden. Wir modifizieren hier jedoch keine Dateien, wir erstellen neue und außerdem setzen wir unseren Dateinamen mit "helloworld" voran. Es besteht also nur eine geringe Wahrscheinlichkeit, dass dies mit anderen Modulen in Konflikt steht oder Probleme mit der Aktualisierung von Magento in der Zukunft. Glückliche Tage!

  • Da wir alle Seiten betreffen möchten, verwenden wir das Standard-Tag und referenzieren es auf den Strukturblock before_body_end . Dies wird die Rolle der Aktion übernehmen und den View-Abschnitt unserer MVC-Struktur auslösen.

  • Jetzt verstehen wir, dass wir uns auf den before_body_end Block konzentrieren. und verknüpfen Sie es mit unserem benutzerdefinierten Block. Dies wird als Referenz bezeichnet und ist ein Haken . Wir hängen es derzeit nicht an etwas Bestehendes an, daher müssen wir die erforderlichen Dateien erstellen.

  • In helloworld.xml wir in template eine footer.phtml . Fahren Sie mit app/design/frontend/base/default/template und erstellen Sie ein Verzeichnis helloworld .

  • Erstellen footer.phtml in diesem Verzeichnis die Datei footer.phtml und füllen Sie diese mit HTML aus. In diesem Lernprogramm werden lediglich einige PHP-Funktionen angezeigt, die mit unserer PHTML-Datei verknüpft sind:

    <p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
    
  • Wir müssen jetzt ein eigenes Blockobjekt erstellen, um die Vorlage mit unserer Blockfunktionalität zu koppeln. Erstellen Sie das Verzeichnis app / code / local / YOUR_COMPANY / HelloWorld / Block / und erstellen Sie darin die Datei Footer.php . Dies wurde in unserer zeta_layout.xml im Typ "helloworld / footer" referenziert. Füllen Sie diese Datei mit:

    <?php
    class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template {
       public function getDate() {
          $date = date('Y-m-d');
          return urlencode($date);
       }
    }
    ?>
    
  • Dies ist die Funktion, die unseren Aufruf getDate() wir aus unserer .phtml Datei .phtml . Wir erweitern die Mage_Core_Block_Template .

  • Diese Funktionalität ist jetzt abgeschlossen. Testen Sie dies, indem Sie auf Ihre Startseite gehen, wo Sie Ihr Modul in der Fußzeile jeder Seite sehen sollten!



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow