Magento: create a new block and add it to a template

1. Module installation xml file, MageRoot/app/etc/modules/MyExtensions_HelloBlock.xml
[code language=”xml”]
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MyExtensions_HelloBlock>
<active>true</active>
<codePool>local</codePool>
</MyExtensions_HelloBlock>
</modules>
</config>
[/code]

2. Module configuration xml file, MageRoot/app/code/local/MyExtensions/HelloBlock/etc/config.xml
[code language=”xml”]
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MyExtensions_HelloBlock>
<version>0.0.1</version>
</MyExtensions_HelloBlock>
</modules>
<global>
<blocks>
<helloblock>
<class>MyExtensions_HelloBlock_Block</class>
</helloblock>
</blocks>
</global>
</config>
[/code]
3. Block class, MageRoot/app/code/local/MyExtensions/HelloBlock/Hello.php
[code language=”php”]
<?php
class MyExtensions_HelloBlock_Block_Hello extends Mage_Core_Block_Template
{
public function hello()
{
echo "hello";
}
}
?>
[/code]

4. Template file for the block, MageRoot/design/frontend/default/default/template/helloblock/hello.phtml
[code language=”php”]
<?php
$this->hello();
?>
[/code]

To create this block dynamically in any existing template file
[code language=”php”]
//helloblock matches <helloblock> in the module config file
//hello matches the block class name
echo $this->getLayout()->createBlock(‘helloblock/hello’)->setTemplate(‘helloblock/hello.phtml’)->toHtml();
[/code]

To insert this block by adding it to a existing layout file
[code language=”xml”]
<block type="helloblock/hello" name="helloblock" template="helloblock/hello.phtml"/>
[/code]

For example, to insert this to the catagory product view xml, MageRoot/app/design/frontend/base/default/layout/catalog.xml
[code language=”xml”]
<catalog_product_view translate="label">
<label>Catalog Product View (Any)</label>
<!– Mage_Catalog –>
<reference name="root">
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
</reference>
<reference name="head">
<action method="addJs"><script>varien/product.js</script></action>
<action method="addJs"><script>varien/configurable.js</script></action>

<action method="addItem"><type>js_css</type><name>calendar/calendar-win2k-1.css</name><params/><!–<if/><condition>can_load_calendar_js</condition>–></action>
<action method="addItem"><type>js</type><name>calendar/calendar.js</name><!–<params/><if/><condition>can_load_calendar_js</condition>–></action>
<action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name><!–<params/><if/><condition>can_load_calendar_js</condition>–></action>
</reference>
<reference name="content">
<!–This is the line added to this catalog.xml file–>
<block type="helloblock/hello" name="helloblock_hello" template="helloblock/hello.phtml"/>
[/code]
After the hello block is added, refresh the cache and you will see the hello when you are on a product detail page.

Add a block to the before_body_end block in Magento
Magento: Passing variables among controller, block, hepler, model and template
Call a block directly without define it in the layout file in Magento
Adding new css js files to magento’s template
Pass a variable to a template .phtml block in Magento

Search within Codexpedia

Custom Search

Search the entire web

Custom Search