Question

What i want to achieve is that I have some html code in the cms/homepage/design, which I want to insert after a certain element in the homepage. This is the xml code:

<cms_index_index translate="label">
        <reference name="content">
            <block type="sama_productblocks/list" name="sama_productblocks_newproducts" after="call_to_actions" template="sama_productblocks/list.phtml">
                <action method="setIdentifier"><id>homepage-latest</id></action>
            </block>

            <block type="core/template" name="top_banners" before="-" template="homepage/topbanners.phtml">
                <block type="experius_linkmanager/link_list" name="homepage_banner">
                    <action method="setIdentifier"><key>hoesjesoutlet-homepage_banner</key></action>
                </block>
                <block type="experius_linkmanager/link_list" name="homepage_small">
                    <action method="setIdentifier"><key>hoesjesoutlet-homepage_small</key></action>
                </block>
            </block>
            <block type="core/template" name="cta_banners" after="modelfilter_search" template="homepage/cta.phtml">
                <block type="experius_linkmanager/link_list" name="homepage_cta">
                    <action method="setIdentifier"><key>hoesjesoutlet-homepage_cta</key></action>
                </block>
            </block>
            <block type="core/template" name="home_text" after="modelfilter_search" template="homepage/text.phtml">
                <!-- Here should I call the html code -->
            </block>
        </reference>
    </cms_index_index>

and the content of the text.phtml should be the html code from the design tab. Well I do not want to remove it from design and put it all of the html code. Is there a function or method to call the content of design from the homepage ? This is the content of the template/homepage/text.phtml

<div class="cta_row">
    <?php // echo $this->getChildHtml('homepage_text');
    // here i want to put the html code from the design tab from homepage
    ?>
</div>
Was it helpful?

Solution

Put your html content inside a new phtml file. This is how you should do it.

File: app\design\frontend\{your_package}\{your_theme}\template\homepage\my_homepage.phtml

<!-- put your html code inside this file -->

ie your html codes comes inside my_homepage.phtml template. Now update the last part of your xml code like this.

<block type="core/template" name="home_text" after="modelfilter_search" template="homepage/text.phtml">
    <!-- call to your custom html code block -->
    <block type="core/template" name="my.homepage.block" as="homepage_text" template="homepage/my_homepage.phtml" />
</block>

Now make sure your text.phtml holds this call..

<?php echo $this->getChildHtml('homepage_text') ?>

Then clear all cache and load the page again. You are done.

Edit

If you want those html codes editable from admin, then as you have stated in your comment, put those html codes inside a static block with an identifier homepage_custom_code (you can use anything here) and then change your xml code like this.

Layout update approach

<block type="core/template" name="home_text" after="modelfilter_search" template="homepage/text.phtml">
    <!-- call to your custom html code block -->
    <block type="cms/block" name="my.homepage.sb" as="homepage_text">
         <action method="setBlockId">
               <block_id>homepage_custom_code</block_id>
         </action>
</block>

and then call your custom block in text.phtml like the same way we did just above ^^^^.

Hard coding approach : (I hate this.)

Otherwise call your static block directly inside your text.phtml like this.

 <?php 
     $this->getLayout()->createBlock(
         'cms/block', 
         'my_custom_text_from_sb', 
          array('block_id' => 'homepage_custom_code')
      )
      ->toHtml() 
  ?>

Both way works. But I recommend the first approach. For me, it looks more clear one.

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top