在Magento中如何修改block区块在某个特定页面的样式,甚至功能呢?这个应用应该是很广泛的。同样的一个block,要想在某个特定的页面,如产品显示页面,让它的内容,样式不一样,如何实现?

其实这并不难,Magento超强的xml配置功能,可以轻松搞定。以logo block为例,如果我想让cms首页的logo显示不一样,使用不同的模板,可以这样做:

在page.xml中,添加:

<cms_index_index>      
<reference name=”header”>
<action method=”unsetChild”><name>logo</name></action>
<block type=”page/html_header” name=”logo” as=”logo” template=”page/html/logo-home.phtml”/>
</reference>
</cms_index_index>

这段XML配置是很清析的,简单说明一下,cms_index_index说明了我们要对哪个页面index进行修改;其次,header是我们所要修改的logo block原先所在的父block,unsetChild action则是撤销原先的logo block设置,接下来再是重新定义这个block。很明显,我们不但可以是简单的换个模板,甚至可以通过修改type参数来调用其它的block。