Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Layout for Magento module

Tags:

layout

magento

I'm new in Magento and I'm trying to make a layout for a module I've build. I have a simple module and an IndexController which outputs 'Hello World.'(I've use this tutorial).

Now I want to make a layout for that module and I've used this tutorial but it doesn't work. Can someone point me to a tutorial or can explain me how layouts work in Magento?

Thx :)

Here's what I've done so far: I have a package called 'Andrei' and a module 'Hello World'.

Here is the config.xml for my module:

<?xml version="1.0" encoding="UTF-8"?>
<config>    
    <modules>
        <Andrei_Helloworld>
            <version>0.1.0</version>
        </Andrei_Helloworld>
    </modules>
    <frontend>
        <routers>
            <helloworld>
                <use>standard</use>
                <args>
                    <module>Andrei_Helloworld</module>
                    <frontName>helloworld</frontName>
                </args>
            </helloworld>
        </routers>  
    </frontend>
</config> 

Here is the Andrei_Helloworld module:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Andrei_Helloworld>
            <active>true</active>
            <codePool>local</codePool>
        </Andrei_Helloworld>
    </modules>
</config> 

And here is my controller:

class Andrei_Helloworld_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        echo 'Hello world';
    }
}

This is all I've done so far. The module works properly. And I want a layout for my IndexController. Thx :)

like image 679
zuzuleinen Avatar asked Feb 17 '12 07:02

zuzuleinen


1 Answers

so, there is some stuff missing...

  • declare the layout update in the your config.xml:

    <frontend>
        ...
        <layout>
            <updates>
                <helloworld>
                    <file>helloworld.xml</file>
                </helloworld>
            </updates>
        </layout>
        ...
    </frontend>
    
  • create the layout xml file, in app/design/frontend/base/default/layout/helloworld.xml and in it you create a reference to your module/controller/action:

    <?xml version="1.0"?>
    <layout>
        <helloworld_index_index>
            <reference name="content">
                <block type="core/template" name="helloworld" template="helloworld.phtml" />
            </reference>
        </helloworld_index_index>
    </layout>
    
  • create the phtml file you've just set as template in your xml layout file, ie app/design/frontend/base/default/template/helloworld.phtml:

    this is the content of helloworld.phtml
    
  • load and render all this stuff, in your controller's action, replace your echo statement with:

    public function indexAction()
    {
        $this->loadLayout();
        $this->renderLayout();
    }
    
  • disable cache, refresh browser, sit back and enjoy
like image 69
OSdave Avatar answered Nov 07 '22 07:11

OSdave