Layout 更改Magento中所有模块页面的设计

Layout 更改Magento中所有模块页面的设计,layout,magento,module,customization,Layout,Magento,Module,Customization,我在Magento做一个自定义模块,一切都进展顺利。。。除了我想更改模块中所有页面使用的基本布局模板之外。我做了一些谷歌搜索,但几乎没有成功。有人有答案吗?我想做以下几点: ... <optionbox> <reference name="root"> <action method="setTemplate"><template>page/empty.phtml</template></action> <

我在Magento做一个自定义模块,一切都进展顺利。。。除了我想更改模块中所有页面使用的基本布局模板之外。我做了一些谷歌搜索,但几乎没有成功。有人有答案吗?我想做以下几点:

...
<optionbox>
  <reference name="root">
    <action method="setTemplate"><template>page/empty.phtml</template></action>
  </reference>
</optionbox>
。。。
page/empty.phtml

正如你可能猜到的,这是一个灯箱。。。我想我是个贪吃惩罚的人:)

在我的模块中,我在控制器动作中这样做:

public function listAction() {
  $this->loadLayout();
  $this->getLayout()->getBlock('root')->setTemplate('page/2columns-right.phtml');
  $this->renderLayout();
}

您是否尝试过将该代码段插入到
optionbox.xml
布局文件中?它看起来应该像您拥有的那样工作?

我注意到您的布局更新根为
,理论上应该涵盖该模块下的所有控制器和操作。然而,我只见过
这样做,其中
index
来自模块中的
IndexController
。因此,请尝试将此替换为控制器名称:

<layout>
 ...
 <optionbox_index>
   <reference name="root">
     <action method="setTemplate"><template>page/empty.phtml</template></action>
   </reference>
 </optionbox_index>

...
,使用说明。这可能会帮助您调试它

干杯,
JD

你每次行动都必须这样做吗?似乎是这样。我尝试在布局xml文件中这样做,但对我来说不起作用。这种方法更灵活,因为你可以在运行时根据几乎每个参数来定制它……基于我所经历的所有心痛和痛苦,我同意。我认为控制器需要设置设计覆盖,至少在这个级别。这基本上就是我现在正在做的。谢谢你的回答。