2012-07-21 70 views
5

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

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

我没有看到任何方法来拉动XML布局文件上的系统变量值。

但我很确定必须有一个正确的方法来做到这一点。到目前为止,这是我有

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> 

回答

10

这可以很容易地实现使用布局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; 
} 
+0

谢谢德鲁...我试了一下...但我得到了这个错误:致命错误:类'Mage_Prem_Spectra_Helper_Data'在D:\ xampp \ htdocs \ magento17 \ app \ Mage.php中找不到第546行。我已将该函数添加到我的默认助手。并设置