En kort beskrivning om hur man gör en enkel ”Hellow world..” modul till Magento.
Starta med att göra modulens filstruktur på följande vis
app/ code/ local/ {Namnrymd}/ {Modulens namn}/ controllers/ indexController.php etc/ config.xml
Praxis för namnrymden är företagsnamnet.
Innehållet i index kontrollern
<?php class {Namnrymd}_{Modulens namn}_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() { $this->loadLayout(); $this->renderLayout(); } }
Innehållet i config -filen
<?xml version="1.0"?> <config> <modules> <{Namnrymd}_{Modulens namn}> <version>0.1.0</version> </{Namnrymd}_{Modulens namn}> </modules> <frontend> <routers> <{modulnamnet}> <use>standard</use> <args> <module>{Namnrymd}_{Modulens namn}</module> <frontName>{routernamnet}</frontName> </args> </{modulnamnet}> </routers> <layout> <updates> <{modulnamnet}> <file>{modulnamnet}.xml</file> </{modulnamnet}> </updates> </layout> </frontend> </config>
Routernamnet är den url som ska leda till modulen
http://www.exempel.com/{routernamnet}/
Modulen berättar för Magento om en layout -fil som du lägger i temat
app\design\frontend\default\default\layout\{modulnamnet}.xml
Innehållet i layout -filen
<?xml version="1.0"?> <layout> <{modulnamnet}_index_index> <reference name="content"> <block type="page/html" name="{modulnamnet}" template="{modulnamnet}/{modulnamnet}.phtml" /> </reference> </{modulnamnet}_index_index> </layout>
Layout -filen berättar för Magento att den ska lägga till ett block i ”content” blocket. Blocket ska använda en template som ligger i temat, exempelvis:
app\design\frontend\default\default\template\
Skapa nu denna template med innehållet:
Hellow world..
Slutligen så vill vi berätta för Magento om vår nya modul. Detta gör vi genom ytterligare en config -fil som ska ligga i
app/etc/modules/
Alla xml filer i denna mappen läses in så namnet på filen spelar ingen större roll. Praxis lyder dock på följande vis
{Namnrymd}_{Modulens namn}.xml
Innehållet i configfilen ska se ut på följande vis:
<?xml version="1.0"?> <config> <modules> <{Namnrymd}_{Modulens namn}> <active>true</active> <codePool>local</codePool> </{Namnrymd}_{Modulens namn}> </modules> </config>
Så, nu så ska det hela funka. Håll tummarna och tårna samt be till ett gäng gudar. Går det ändå inte så lämna gärna en kommentar härunder och förklara vilken inkompetent jävel jag är.
Länkar
http://www.webspeaks.in/2010/07/create-your-first-magento-module.html
http://stackoverflow.com/questions/576908/how-does-magento-code-work
http://blog.baobaz.com/en/blog/magento-module-create-your-own-controller