2012-07-21 66 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行。我已將該函數添加到我的默認助手。並設置