Trying to get the home page to display a 4 column grid for the display of items using a two_column_right template, in the local.xml file. Unfortunately it’s taking on the three column grid I’ve specified for catalog pages elsewhere :/
Possibly need to insert <update handle="four_column_grid" /> under a tag referencing the home page??
<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
<four_column_grid>
<reference name="product_list">
<action method="setColumnCount">
<count>4</count>
</action>
</reference>
</four_column_grid>
<three_column_grid>
<reference name="product_list">
<action method="setColumnCount">
<count>3</count>
</action>
</reference>
</three_column_grid>
<default>
<!-- Header -->
<reference name="header">
<action method="unsetChild"><name>welcome</name></action>
</reference>
<!-- Root -->
<reference name="root">
<action method="unsetChild"><name>breadcrumbs</name></action>
</reference>
<reference name="footer">
<!-- Remove all the other Magento links - "Site Map, Search Terms, Advanced Search, and Contact Us" -->
<!-- <action method="unsetChild"><name>footer_links</name></action> -->
</reference>
<!-- Right sidebar -->
<reference name="right">
<remove name="paypal.partner.right.logo"/>
</reference>
</default>
<catalog_category_default>
<update handle="three_column_grid" />
</catalog_category_default>
<catalog_category_layered>
<update handle="three_column_grid" />
</catalog_category_layered>
</layout>
Short answer: you can’t set values on blocks “inside” of CMS blocks using layout XML.
When
loadLayout()is called in action controllers, the layout XML is processed, all blocks are instantiated, and the<action>nodes are executed. But the blocks are not yet rendered.When
renderLayout()is called the blocks are rendered by calling theirtoHtml()method.If the block happens to be a
cms/block(orcms/page) instance containing a{{block ...}}instance, that block will be instantiated at this time.At this moment during the request flow all layout XML
<action>nodes already have been processed.In essence you are referencing a block instance in the layout XML that doesn’t yet exist.
As a workaround, it might work for you to add the product list block to the homepage using layout XML, too. The downside is that you can’t place it freely in other content of the CMS block.
Of course you are not limited to the product list block. If you need to place the list inside of other content, you could add cms blocks to the homepage using layout XML ad well.