Magento后端允许您禁用每个站点的模块输出。我已经完成了一些谷歌搜索,但无法弄清楚如何通过我的代码获取此值。基本上,当我的模块输出被禁用时,工作正常。但我发现(很难)Magento并没有阻止模块加载每个站点。
因为我正在扩展一些核心类,所以一些构造函数仍在执行中。我的想法是检查模块输出是否被禁用。如果是这样,让我的构造函数调用父的构造函数。如果启用了模块输出,请继续我的自定义代码。
我无法弄清楚如何为当前站点获取此值(我是多站点,BTW)。理想情况下会是这样的:
$isThisEnabled = Mage::app()->getCurrentStore()->isOutputEnabled('myModule');
基本上有一行可以获取当前站点的值(如果没有为当前站点指定,则为默认值)。
非常感谢任何帮助!
编辑:我找到了表core_config_data,它似乎存储了这些信息。如果必须的话,我可以手动查询它,但我觉得Magento会有内置的东西来返回当前商店的值,然后回到默认值。
答案 0 :(得分:8)
这是一个标准的配置设置,因此访问它应该与访问任何其他配置设置没有什么不同。您只需要知道该值的路径是什么。分析数据库我相信这应该可以解决问题:
Mage::getStoreConfig('advanced/modules_disable_output/Namespace_Module');
答案 1 :(得分:3)
另一个选项是Mage_Core_Helper_Abstract
有isModuleEnabled($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";
}
}
?>