magento
Modulstruktur
Sök…
Anmärkningar
Moduler finns för att förlängas. Du kan inte ändra the app/code/ filerna utan att förbjuda framtida uppdateringar. Istället lägger vi till en modul till app/code/local katalog (den lokala katalogen kan saknas, i så fall måste den skapas manuellt. Detta är vanligt i senare versioner av Magento) för att lägga till anpassad lokal funktionalitet.
Alla modulkonfigurationsfiler börjar med en <config> -tagg. Den nya modulen deklareras i <modules> -taggen. Vi kommer att ringa en modul med namnet YOUR_COMPANY_HelloWorld, därför används <YOUR_COMPANY_HelloWorld> . Här definierar vi versionen (allra första = 0.0.1)
En lista över XML-händelser kan hittas på: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml
Om du har några problem så kolla in: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/
Skapa en modul från början (Hello World)
Magento-anpassad modulutveckling är en kärna del av varje Magento-utvecklings- eller Magento-projekt, eftersom du i varje skede kanske vill integrera din egen funktionalitet / modul i ditt befintliga Magento-projekt.
Det första som utvecklare bör inaktivera är systemcachen. Annars kommer utvecklingen att bli en smärta eftersom alla förändringar kräver en spolning. Från magento adminpanelen: navigera till System > Cache Management > Select All > Actions : Disable. Använd följande guide för att skapa en ny modul:
Skapa en mapp i
app/code/local/- namngivningskonventioner tar vanligtvis namnet på ditt företag, t.ex.app/code/local/<YOUR_COMPANY>.Nu har vi en anpassad plats för våra moduler. Skapa en annan katalog, kalla det något relaterat till den typ av modul du vill skapa t.ex. app / kod / local / <YOUR_COMPANY> / HelloWorld / - "HelloWorld" är vad jag kommer att kalla den här modulen.
Den här katalogen behöver en
config.xmlså Magento känner igen den som en ny modul. Skapa en annan mapp med namnetetcFöljt av en xml-fil som heter config.xml. Katalogen ska se ut somapp/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xmlDetta är strukturen för xml-filen:<?xml version="1.0" encoding="UTF-8" ?> <config> <modules> <YOUR_COMPANY_HelloWorld> <version>0.0.1</version> </YOUR_COMPANY_HelloWorld> </modules> </config>Därefter måste modulerna deklareras till Magento. Fortsätt till
app/etc/modules. Skapa ett nytt XML-dokument och ge det valda namnen på dina taggar:YOUR_COMPANY_HelloWorldi mitt fall. Skriv i detta dokument:<?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>Återigen används konfigurations- och modultaggar för att förklara en ny modul till Magento. Aktivt är standardvärdet som du kan komma åt i
Admin Panel under System > Configuration > Advanced.codePoolberättar Magento vilken katalog ducodePooltitta på.locali vårt fallDen här modulen har nu skapats, alltså modellen för vår MVC-struktur. Du bör kunna se din nya modul i Admin Panel under
System > Configuration > Advanced. Men det gör inte någonting ännu! Du måste gå tillbaka till vår config.xml-fil och definiera XML-element.Därefter med tutorialen; Vi kommer att använda några av dessa XML-element för att skapa klasser och manipulera alla sidor i framsidan av vår webbplats. Tillbaka till filen
config.xmlskriver du följande under taggen</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>Som ni ser ser vi ut hela tiden snarare än att manipulera kärnfiler.
helloworldtaggen är små bokstäver eftersom det kommer att peka på ett handtag, och för kontinuitet kommer vi att namnge det så nära som möjligt. Vi länkar sedan detta till modulenYOUR_COMPANY_HelloWorld.Vi ändrar layouten. Därför måste vi skapa detta handtag i layoutkatalogen. fortsätt till
app/design/frontend/base/default/layout. Vi sa till modulen att leta efter filenhelloworld.xml. Därför måste vi skapa det i den här katalogen. Vad väntar du på. Gör det!! och fyll den med:<?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 kan de av er som har en liten Magento-upplevelse eller har läst mer anmärkningsvärda Magento-tutorials kissa på att vi gör ändringar i bas / standard eftersom det är här Magento-kärnfiler finns. Men vi modifierar inga filer här, vi skapar nya och dessutom förbereder vi vårt filnamn med "helloworld", så det finns mycket liten chans att detta kommer i konflikt med andra moduler eller orsakar problem med att uppgradera Magento i framtida. Lyckliga dagar!
Eftersom vi vill påverka alla sidor använder vi standardtaggen och hänvisar den till
before_body_endstrukturblock. Detta kommer att agera åtgärdens roll och utlösa View-avsnittet i vår MVC-struktur.Nu förstår vi att vi
before_body_endblocketbefore_body_end. och länka det till vårt anpassade block. Detta kallas en referens och är en krok . Vi ansluter för närvarande inte till något som finns, därför måste vi skapa nödvändiga filer.I
helloworld.xmlangav vi i mall enfooter.phtml. Fortsätt tillapp/design/frontend/base/default/templateoch skapa en kataloghelloworld.Inuti den här katalogen skapar du
footer.phtmlfilen och fyller i med HTML, den här handboken skriver helt enkelt detta för att visa några PHP-funktioner kopplade till vår PHTML-fil:<p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>Vi måste nu skapa vårt eget blockobjekt för att koppla mallen med vår blockfunktion. Skapa katalogappen / koden / local / YOUR_COMPANY / HelloWorld / Block / och skapa filen
Footer.phpinuti detta. Detta hänvisades till i vår zeta_layout.xml i typen "helloworld / footer". Populera den här filen med:<?php class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template { public function getDate() { $date = date('Y-m-d'); return urlencode($date); } } ?>Detta är den funktionalitet som kommer att fylla vårt samtal
getDate()vi ringde från vår.phtmlfil. Vi utökarMage_Core_Block_Template.Den här funktionen är nu klar. Testa detta genom att gå till din hemsida där du ska se din modul i sidfoten på varje sida!