Magento通过系统变量动态更改布局

Kam*_*mal 5 layout magento magento-1.4 magento-1.5 magento-1.6

有没有办法我们可以通过使用已在我们自己的模块上设置的系统变量动态地更改Magento页面的布局(比如说产品类别页面)?我希望能够通过我自己的模块管理员配置面板设置我的类别页面的默认布局.因此,每次我想更改某个magento页面的默认布局时,我都不必处理那些令人困惑的XML布局文件.

我知道,在一个phtml文件中,我们可以通过调用Mage::getStoreConfig('module/scope/...')使用该系统变量来调用我们自己的模块的系统变量.但是,如果我们想要使用该系统变量来更改默认情况下在XML布局文件上设置的整个布局,该怎么办呢?

我没有看到任何方法在XML Layout文件上提取该系统变量值.

但我很确定必须有正确的方法来做到这一点.到目前为止,这是我得到的最接近的线索

Magento - xml布局,指定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>
Run Code Online (Sandbox Code Playgroud)

Dre*_*ter 10

使用布局xml和帮助程序中的简单方法可以非常轻松地实现这一点.我认为这里没有对观察员的任何要求或其他任何过于复杂的要求.

因此,根据您的要求从您自己的模块存储配置值更改所有类别页面布局,您将在布局xml中需要以下内容:

<catalog_category_view>
    <reference name="root">
        <action method="setTemplate">
            <template helper="yourmodule/switchTemplate" />                  
        </action>
    </reference>
</catalog_category_view>
Run Code Online (Sandbox Code Playgroud)

以下模块中的默认帮助器:

public function switchTemplate()
{
    $template = Mage::getStoreConfig('path_to/yourmodule/config');
    return $template;
}
Run Code Online (Sandbox Code Playgroud)