有没有一种方法可以通过使用在我们自己的模块上设置的系统变量来动态更改 Magento 页面(比方说产品类别页面)的布局?我希望能够通过我自己的模块管理配置面板设置我的类别页面的默认布局。这样,每次我想要更改某个 magento 页面的默认布局时,我就不必处理那些令人困惑的 XML 布局文件。
我知道,在 phtml 文件上,我们可以通过调用简单地调用我们自己的模块的系统变量Mage::getStoreConfig('module/scope/...')
使用该系统变量。但是如果我们想使用该系统变量来更改默认在 XML 布局文件上设置的整个布局该怎么办?
我没有看到任何方法可以在 XML 布局文件中提取该系统变量值。
但我很确定一定有一个正确的方法来做到这一点。到目前为止,这是我得到的最接近的线索
Magento - xml 布局,指定 ifconfig 的值? https://stackoverflow.com/questions/5596193/magento-xml-layouts-specify-value-for-ifconfig
但是,我仍然找不到我真正想要实现的目标的任何直接答案
这是我的 config.xml 的内容
<config>
<modules>
<Prem_Spectra>
<version>0.1.0</version>
</Prem_Spectra>
</modules>
<global>
<models>
<spectra>
<class>Prem_Spectra_Model</class>
</spectra>
</models>
<helpers>
<prem_spectra>
<class>Prem_Spectra_Helper</class>
</prem_spectra>
</helpers>
</global>
</config>
使用布局 xml 和帮助程序中的简单方法可以轻松实现这一点。我认为这里没有任何对观察员的要求或任何其他过于复杂的内容。
因此,根据您从自己的模块存储配置值更改所有类别页面布局的要求,您将需要在布局 xml 中添加以下内容:
<catalog_category_view>
<reference name="root">
<action method="setTemplate">
<template helper="yourmodule/switchTemplate" />
</action>
</reference>
</catalog_category_view>
以及模块默认帮助程序中的以下内容:
public function switchTemplate()
{
$template = Mage::getStoreConfig('path_to/yourmodule/config');
return $template;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)