Skapa en modul

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

Läs också

Module controller action