Zoeken…


Opmerkingen

Modules bestaan om uit te breiden. U kunt the app/code/ bestanden niet wijzigen zonder toekomstige updates te verbieden. In plaats daarvan voegen we een module toe aan de app/code/local map (de lokale map kan ontbreken, zo ja, deze moet handmatig worden gemaakt. Dit is gebruikelijk in latere versies van Magento) voor extra aangepaste lokale functionaliteit.

Alle configuratiebestanden van de module beginnen met een tag <config> . De nieuwe module wordt gedeclareerd in de tag <modules> . We zullen een module met de naam YOUR_COMPANY_HelloWorld aanroepen, daarom worden de tags <YOUR_COMPANY_HelloWorld> gebruikt. Hier definiëren we de versie (allereerste = 0.0.1)

Een lijst met XML-evenementen is te vinden op: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml

Als je problemen ondervindt, kijk dan op: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/

Een geheel nieuwe module maken (Hello World)

Magento aangepaste module-ontwikkeling is een kernonderdeel van elke Magento-ontwikkeling of Magento-project, omdat u in elk stadium uw eigen functionaliteit / module wilt integreren in uw bestaande Magento-project.

Het eerste dat ontwikkelaars moeten uitschakelen, is de systeemcache. Anders wordt ontwikkelen lastig omdat bij elke verandering een flush nodig is. Vanuit het magento-beheerpaneel: ga naar System > Cache Management > Select All > Actions : Disable. Gebruik de volgende gids om een nieuwe module te maken:

  • Maak een map in app/code/local/ - naamgevingsconventies nemen meestal de naam van uw bedrijf, bijvoorbeeld app/code/local/<YOUR_COMPANY> .

  • Nu hebben we een aangepaste locatie voor onze modules. Maak een andere map aan, noem deze iets gerelateerd aan het type module dat u wilt maken, bijvoorbeeld app / code / local / <YOUR_COMPANY> / HelloWorld / - "HelloWorld" is wat ik deze module zal noemen.

  • Deze map heeft een config.xml dus Magento herkent het als een nieuwe module. Maak een andere map met de naam etc . Gevolgd door een xml-bestand met de naam config.xml. De map moet eruitzien als app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml Dit is de structuur van het xml-bestand:

    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>
             <version>0.0.1</version>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • Vervolgens moeten modules worden gedeclareerd bij Magento. Ga door naar app/etc/modules . Maak nog een XML-document en geef het de gekozen namen van uw tags: YOUR_COMPANY_HelloWorld in mijn geval. In dit document schrijf:

    <?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>
    
  • Opnieuw worden configuratie- en moduletags gebruikt om een nieuwe module aan Magento te declareren. Actief is de standaardwaarde die toegankelijk is in het Admin Panel under System > Configuration > Advanced . codePool vertelt Magento welke directory te kijken in. local in ons geval

  • Deze module is nu opgezet, dus het model van onze MVC-structuur. u zou uw nieuwe module moeten kunnen zien in het beheerdersdashboard onder System > Configuration > Advanced . Het doet echter nog niets! U moet teruggaan naar ons bestand config.xml en XML-elementen definiëren.

  • Aansluitend op de tutorial; We zullen enkele van deze XML-elementen gebruiken om klassen te maken en alle pagina's aan de voorkant van onze site te manipuleren. Terug naar het bestand config.xml schrijf het volgende onder de 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>
    
  • Zoals u kunt zien, breiden we constant kernbestanden uit in plaats van ze te manipuleren. De tag helloworld is in kleine letters, omdat dat naar een handle verwijst, en voor de continuïteit zullen we deze zo dicht mogelijk noemen. We koppelen dit vervolgens aan de module YOUR_COMPANY_HelloWorld .

  • We veranderen de lay-out. Daarom moeten we deze handle in de layoutmap maken. ga door naar app/design/frontend/base/default/layout . We hebben de module laten zoeken naar het bestand helloworld.xml . Daarom moeten we het in deze map maken. Waar wacht je op. Doe het!! en vul het in met:

    <?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>
    
  • Nu kunnen degenen onder u die een beetje Magento-ervaring hebben of nog meer opmerkelijke Magento-tutorials hebben gelezen, snakken naar het feit dat we wijzigingen aanbrengen in base / default, omdat dit is waar de Magento-kernbestanden zich bevinden. We wijzigen hier echter geen bestanden, we maken nieuwe en bovendien voegen we onze bestandsnaam toe aan "helloworld", dus er is weinig kans dat dit conflicteert met andere modules of problemen veroorzaakt met het upgraden van Magento in de toekomst. Gelukkige dagen!

  • Omdat we alle pagina's willen beïnvloeden, gebruiken we de standaardtag en verwijzen we naar het structuurblok before_body_end . Dit zal de rol van de actie vervullen en de sectie View van onze MVC-structuur activeren.

  • Nu begrijpen we dat we before_body_end naar het before_body_end blok. en deze koppelen aan ons aangepaste blok. Dit wordt een referentie genoemd en is een haak . We houden het momenteel niet vast aan iets dat bestaat, daarom moeten we de nodige bestanden maken.

  • In helloworld.xml hebben we in sjabloon een footer.phtml . Ga naar app/design/frontend/base/default/template en maak een directory- helloworld .

  • Maak in deze map het footer.phtml bestand en vul dit in met HTML, deze tutorial schrijft dit eenvoudig om een aantal PHP-functionaliteit weer te geven die is gekoppeld aan ons PHTML-bestand:

    <p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
    
  • We moeten nu ons eigen blokobject maken om de sjabloon aan onze blokfunctionaliteit te koppelen. Maak de directory-app / code / local / YOUR_COMPANY / HelloWorld / Block / aan en maak Footer.php het bestand Footer.php . Hiernaar werd verwezen in onze zeta_layout.xml van het type "helloworld / footer". Vul dit bestand in met:

    <?php
    class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template {
       public function getDate() {
          $date = date('Y-m-d');
          return urlencode($date);
       }
    }
    ?>
    
  • Dit is de functionaliteit die onze aanroep getDate() zal vullen die we vanuit ons .phtml bestand hebben aangeroepen. We breiden de Mage_Core_Block_Template .

  • Deze functionaliteit is nu voltooid. Test dit door naar uw startpagina te gaan waar u uw module in de voettekst van elke pagina zou moeten zien!



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow