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>
Best Answer
I would love to share my thoughts on your code. So this is the code that you have tried in your
footer.phtml
Your first code cretes a new block and render its content. Code is correct and you got output. However your block is not set with a name. Hence you cannot refer your block in layout update files. In layout update XML files every block is referencing by its name. So the first step is to set a name for your block.
Footer section is normally cached. So some times even if we unset some blocks from that part, it won't see get affected in frontend. Avoiding this issue is somewhat a long step. However in
getChildHtml()
method, you can specify whether the block need to use cache to render it. For this you need to passfalse
value as its second parameter. So in effect the code insidefooter.phtml
should look like this.See I have specifed name for
reports/prodcut_viewed
block by passing a second parameter increateBlock()
and also specifiedfalse
as second parameter ingetChildHtml()
method.Now your layout XML file should look like this.
This will remove these two blocks from every cms pages. Hope that gives you some idea