Search code examples
xmlmagentoblockfooter

Magento - Remove blocks from footer on CMS page


In my magento store I have the recently viewed products block and newsletter signup block inside my footer as shown with the below code all working ok:

footer.phtml

<?php echo $this->getLayout()->createBlock('reports/product_viewed')->setTemplate('reports/product_viewed.phtml')->toHtml(); ?>

<?php echo $this->getChildHtml('footer.newsletter') ?>

On one of my CMS pages i want to hide these 2 blocks. In the design admin tab for my CMS page i have already hidden the breadcrumbs with the below in the Custom Layout Update XML section, again working fine:

<reference name="root">
    <remove name="breadcrumbs" />
</reference>

I cannot seem to come up with the correct code to remove these blocks. I have tried several lines of code for each block:

<reference name="footer">
    <remove name="reports.product.viewed" />
</reference>

<reference name="root">
    <remove name="footer.reports.product.viewed" />
</reference>

<reference name="footer">
    <action method="unsetChild"><alias>reports.product.viewed</alias></action>
</reference>

Solution

  • Try using below code in your layout XML file

    <cms_page>
        <reference name="footer">
            <remove name="footer-product-viewed" />
            <remove name="your_footer_newsletter_block_name" />
        </reference>
    </cms_page>
    

    Code in your footer.phtml

    <?php echo $this->getLayout()->createBlock('reports/product_viewed', 'footer-product-viewed')->setTemplate('reports/product_viewed.phtml')->toHtml(); ?>
    
    <?php echo $this->getChildHtml('footer.newsletter') ?>
    

    If your footer newsletter block is still not removed try passing false parameter, which will not allowed the block to render from cache.

    <?php echo $this->getChildHtml('footer.newsletter', false) ?>
    

    Hope it helps.