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.xml
så Magento känner igen den som en ny modul. Skapa en annan mapp med namnetetc
Följt av en xml-fil som heter config.xml. Katalogen ska se ut somapp/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml
Detta ä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_HelloWorld
i 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
.codePool
berättar Magento vilken katalog ducodePool
titta på.local
i 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.xml
skriver 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.
helloworld
taggen ä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_end
strukturblock. 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_end
blocketbefore_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.xml
angav vi i mall enfooter.phtml
. Fortsätt tillapp/design/frontend/base/default/template
och skapa en kataloghelloworld
.Inuti den här katalogen skapar du
footer.phtml
filen 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.php
inuti 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.phtml
fil. 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!