Php – Magento 1.9 create new Hello World module

magentomagento-1.9modulePHP

Hello, guys!

I really hope someone will help me with this.
I trying to make new module in magento 1.9.3.2, which show "Hello world!" from phtml file. I created that step by step by this rules. Module is created, but when I open module (127.0.0.1/magento/helloworld) in browser, nothing appear, just empty this template.
opened module in browser – screenshot

Here is steps by what i guided:
1. Module declaration:
Create new xml file in app/etc/modules/M4U_HelloWorld.xml
<?xml version="1.0"?>
<config>
<modules>
<M4U_HelloWorld>
<active>true</active>
<codePool>local</codePool>
</M4U_HelloWorld>
</modules>
</config>

  1. Module configuration
    2.1. Create controller class in app/code/local/M4U/HelloWorld/controllers/IndexController.php

    class M4U_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action
    {
    public function indexAction()
    {
    $this->loadLayout(array('default'));
    $this->renderLayout();
    }
    }

2.2. Create Block class in app/code/local/M4U/HelloWorld/Block/HelloWorld.php

class M4U_HelloWorld_Block_HelloWorld extends Mage_Core_Block_Template
                  {
                       // necessary methods
                  }

2.3. Create configuration xml in app/code/local/M4U/HelloWorld/etc/config.xml

<?xml version="1.0"?>
<config>
<global>
    <modules>
            <m4u_helloworld>
                    <version>0.1.0</version>
            </m4u_helloworld>
    </modules>
<blocks>
        <helloworld>
            <rewrite>
     <helloworld>M4U_HelloWorld_Block_HelloWorld</helloworld>
    </rewrite>
        </helloworld>
 </blocks>
    </global>
   <frontend>
            <routers>
                    <helloworld>
                            <use>standard</use>
                            <args>
                                  <module>M4U_HelloWorld</module>
                                  <frontName>helloworld</frontName>
                            </args>
                    </helloworld>
            </routers>
    <layout>
        <updates>
            <helloworld>
                  <file>helloworld.xml</file>
            </helloworld>
        </updates>
        </layout>
    </frontend>

  1. Define frontend template
    3.1. Define page layout in app/design/frontend/default/default/layout/helloworld.xml
    <?xml version="1.0"?>
    <layout version="0.1.0">
    <helloworld_index_index>
    <reference name="root">
    <action method="setTemplate"> <template>page/1column.phtml</template></action>
    </reference>
    <reference name="content">
    <block type="helloworld/helloworld" name="hello" template="helloworld/helloworld.phtml"/>
    </reference>
    </helloworld_index_index>
    </layout>

  2. Create template file in app/design/frontend/default/default/template/helloworld/helloworld.phtml

Best Answer

TRIED AND TESTED

screenshot here

you can display your helloworld template in your custom module, done some minor modifications to your code.

  1. module declaration:

    <?xml version="1.0"?>
     <config>
           <modules>
              <M4U_HelloWorld>
                   <active>true</active>
                   <codePool>local</codePool>
              </M4U_HelloWorld>
           </modules>
     </config>
    
  2. creating the folder structure and add the files

A. app/code/local/M4U/HelloWorld/etc/config.xml

<config>
    <modules>
        <m4u_helloworld>
            <version>0.1.0</version>
        </m4u_helloworld>
    </modules>
    <frontend>
        <routers>
            <helloworld>
                <use>standard</use>
                <args>
                    <module>M4U_HelloWorld</module>
                    <frontName>helloworld</frontName>
                </args>
            </helloworld>
        </routers>
        <layout>
            <updates>
                <helloworld module="M4U_HelloWorld">
                    <file>M4U_HelloWorld.xml</file>
                </helloworld>
            </updates>
        </layout>
    </frontend>
    <global>
        <blocks>
            <helloworld>
                <class>M4U_HelloWorld_Block</class>
            </helloworld>
        </blocks>
    </global>
</config>

B. app/code/local/M4U/HelloWorld/block/HelloWorld.php

class M4U_HelloWorld_Block_HelloWorld extends Mage_Core_Block_Template {

}

C. app/code/local/M4U/HelloWorld/controllers/IndexController.php

class M4U_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action {

    public function indexAction() {
        echo 'hello world';
        $this->loadLayout();  //This function read all layout files and loads them in memory
        $this->renderLayout();
    }

}

D. app/design/frontend/ * theme base* / * mytheme * /layout/M4U_HelloWorld.xml

<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
    <helloworld_index_index>
        <reference name="root">
            <action method="setTemplate">                  
                <template>page/1column.phtml</template>
            </action>
        </reference>
        <reference name="content">
            <block type="helloworld/helloworld" name="hello" template="helloworld/helloworld.phtml"/>
        </reference>
    </helloworld_index_index>
</layout>

E. app/design/frontend/ * theme base* / * mytheme * /template/helloworld/helloworld.php

echo 'im a template block';
Related Topic