2010-09-15 54 views
4

Magento後端允許您禁用每個站點的模塊輸出。我做了一些Google搜索,但無法弄清楚如何通過我的代碼獲取這個值。基本上,當我的模塊的輸出被禁用,工作得很好。但我發現(困難的方式)Magento不會阻止該模塊按每個站點加載。Magento:獲取「禁用模塊輸出」的值

因爲我擴展了一些核心類,一些構造函數仍在執行中。我的想法是檢查模塊輸出是否被禁用。如果是這樣,讓我的構造函數調用父類的構造函數。如果模塊輸出已啓用,請繼續使用我的自定義代碼。

我只是不知道如何獲取當前網站的這個值(我是多點,順便說一句)。理想情況下是這樣的:

$isThisEnabled = Mage::app()->getCurrentStore()->isOutputEnabled('myModule');

基本上有抓取當前網站的價值單行(或默認,如果沒有當前站點指定)。

任何幫助將不勝感激!

編輯:我發現表core_config_data,它似乎存儲此信息。如果必須的話,我可以手動查詢它,但我覺得Magento會有內置的東西來返回當前商店的價值,回落到默認值。

回答

8

這是一個標準的配置設置,因此訪問它應該與訪問任何其他配置設置沒有區別。你只需要知道這個值的路徑是什麼。分析DB我相信這應該做的伎倆:

Mage::getStoreConfig('advanced/modules_disable_output/Namespace_Module'); 
+0

謝謝,這正是我所需要的。 – 2010-09-17 23:02:31

3

另一種選擇是,Mage_Core_Helper_AbstractisModuleEnabled($moduleName = null)方法,這意味着你應該能夠調用:

Mage::helper('core/data')->isModuleEnabled('Namespace_Module') 

還有一種isModuleOutputEnabled()方法。看看代碼,這些似乎沒有被存儲/視圖過濾,而@ silvo的方法是。

+1

這實際上是首選方法。該方法使用'getStoreConfigFlag',所以它也需要配置當前的商店視圖,並且它檢查模塊本身是否被啓用。 – 2015-01-10 19:30:12

2
<?php 
public function mycontrollerAction() 
{ 
    $moduleName = 'Namespace_Modulename';//eg Mage_Cms  
    if(Mage::getConfig()->getModuleConfig($moduleName)->is('active', 'true')) 
    { 
     echo "Module Enable"; 
    } 
    else 
    { 
     echo "Module Disable"; 
    } 
} 
?>