Magento:获取“禁用模块输出”的值

时间:2010-09-15 14:10:46

标签: php magento module

Magento后端允许您禁用每个站点的模块输出。我已经完成了一些谷歌搜索,但无法弄清楚如何通过我的代码获取此值。基本上,当我的模块输出被禁用时,工作正常。但我发现(很难)Magento并没有阻止模块加载每个站点。

因为我正在扩展一些核心类,所以一些构造函数仍在执行中。我的想法是检查模块输出是否被禁用。如果是这样,让我的构造函数调用父的构造函数。如果启用了模块输出,请继续我的自定义代码。

我无法弄清楚如何为当前站点获取此值(我是多站点,BTW)。理想情况下会是这样的:

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

基本上有一行可以获取当前站点的值(如果没有为当前站点指定,则为默认值)。

非常感谢任何帮助!

编辑:我找到了表core_config_data,它似乎存储了这些信息。如果必须的话,我可以手动查询它,但我觉得Magento会有内置的东西来返回当前商店的值,然后回到默认值。

3 个答案:

答案 0 :(得分:8)

这是一个标准的配置设置,因此访问它应该与访问任何其他配置设置没有什么不同。您只需要知道该值的路径是什么。分析数据库我相信这应该可以解决问题:

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

答案 1 :(得分:3)

另一个选项是Mage_Core_Helper_AbstractisModuleEnabled($moduleName = null)方法,这意味着您应该可以致电:

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

还有isModuleOutputEnabled()方法。查看代码,这些似乎不会被存储/视图过滤,而@ silvo的方法是。

答案 2 :(得分: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";
    }
}
?>