Magento - 检查是否安装了模块?

时间:2010-11-29 19:46:02

标签: magento

我在模板文件中有一小段代码,如果安装了某个模块,我只想运行。我找到了下面的代码,您可以使用它来查找模块是否处于活动状态,但我想知道是否安装了模块。

$modules = Mage::getConfig()->getNode('modules')->children();
$modulesArray = (array)$modules;

if($modulesArray['Mage_Paypal']->is('active')) {
    echo "Paypal module is active.";
} else {
    echo "Paypal module is not active.";
}

我想我可能会得到所有已安装模块的名称列表,然后使用

if (stristr($modulelist, 'Name_Extension'))

仅在安装了引用的扩展名时显示我的代码。

任何想法如何做到这一点?或者更好的解决方案?

6 个答案:

答案 0 :(得分:88)

有一个核心帮手:

Mage::helper('core')->isModuleEnabled('MyCompany_MyModule');

它在Mage_Core_Helper_Abstract

还有isModuleOutputEnabled()方法来检查系统中是否禁用了模块的输出 - >配置 - >高级 - >禁用模块输出。

答案 1 :(得分:10)

试试这个:

$modules = Mage::getConfig()->getNode('modules')->children();
$modulesArray = (array)$modules;

if(isset($modulesArray['Mage_Paypal'])) {
    echo "Paypal module exists.";
} else {
    echo "Paypal module doesn't exist.";
}   

答案 2 :(得分:6)

查找模块是否已安装但已禁用的另一种方法是:

if (Mage::getStoreConfigFlag('advanced/modules_disable_output/Mage_Paypal')) {
    echo "Paypal module is installed";
}

修改
刚刚意识到这个版本 - 使用鲜为人知的ifconfig - 只有在禁用另一个模块时才能显示一个块。例如

<layout>
    <default>
        <reference name="content">
            <block ifconfig="advanced/modules_disable_output/Mage_Paypal" type="core/template" template="sorry/this/is/unavailable.phtml" />
        </reference>
    </default>
</layout>

答案 3 :(得分:2)

您可以使用此代码段检查安装时是否存在模块Mage::getConfig()->getNode('modules/Mage_Paypal')如果不存在则返回FALSE

答案 4 :(得分:1)

在您的模块声明中,尝试添加depends元素,例如this page。 这可能会引发一个异常,您可以使用try / catch块处理它。

答案 5 :(得分:0)

在任何类,模型,控制器甚至PHTML中,您都可以调用它,它将起作用。

Data.php

class Company_Module_Helper_Data extends Mage_Core_Helper_Abstract 
{ 
  const XML_PATH_GEN_ENABLE = 'Section/Group/Field';
  public function isEnable() 
  {
    return Mage::getStoreConfigFlag(XML_PATH_GEN_ENABLE,Mage::app()->getStore()->getId());
  } 
}

您可以使用以下代码Mage::helper('module_name')->isEnable()

拨打电话

您的配置文件就像

config.xml中

<global>
  <helpers> 
    <module_name> 
      <class>Company_Module_Helper</class> 
    </module_name> 
  </helpers>
  // Another Necessary Code for this extension
</global>