2012-03-01 92 views
0

我有一个非常奇怪的问题。Magento布局重写

我创建了有它自己的布局XML模块,并以正确的手柄具有

<reference name="product_list"> 
    <action method="setTemplate"><template>rebates/product/list.phtml</template></action> 
</reference> 

更新使用正确的模板。

我还重写了模块以使用我的阻止class Company_Module_Block_List extends Mage_Catalog_Block_Product_List

我正在使用Alan Storms commerecebug,所以我知道该块正在被使用。此外,我使用?showLayout查看了页面布局xml,并且看到正在调用setTemplate方法。

当我打电话

public function _construct(){  
    parent::_construct(); 
    echo $this->getTemplate(); 
} 

在块,正确的模板显示出来,但如果我创建

protected function _toHtml(){ 
    parent::_toHtml(); 
    echo $this->getTemplate(); 
} 

它恢复到旧模板?

+0

打开模板路径提示,这将显示渲染时实际正在使用的模板。在布局阶段之后有可能会改变模板,可能是第三方模块? – clockworkgeek 2012-03-01 19:38:31

+0

我这样做了,它使用了错误的模板。 – josephtikva1 2012-03-01 20:46:51

+2

事实上,在应用action方法之前,在'_construct()'方法中调用'echo $ this-> getTemplate();'会发生**,所以它*应该显示错误的模板。这使我相信您的问题中的一些相关信息缺失。 – Vinai 2012-03-01 21:01:44

回答

0

我最终加入了

function _beforeToHtml(){ 
    $this->setTemplate('my_template.phtml'); 
} 

我不喜欢它,但它的工作原理,以及该模块是不依赖于工作的其他布局....