Magento - проверка, установлен ли модуль? - PullRequest
16 голосов
/ 29 ноября 2010

У меня есть небольшой фрагмент кода в файле шаблона, который я ТОЛЬКО хочу запустить, если установлен определенный модуль. Я нашел приведенный ниже код, который можно использовать для определения активности модуля, но я хочу знать, установлен ли модуль.

$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 ]

88 голосов
/ 14 сентября 2012

Для этого есть основной помощник:

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

Это в Mage_Core_Helper_Abstract.

Существует также метод isModuleOutputEnabled() для проверки, отключен ли вывод модуля в Система -> Конфигурация -> Дополнительно -> Отключить вывод модулей.

10 голосов
/ 30 ноября 2010

Попробуйте это:

$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.";
}   
6 голосов
/ 30 ноября 2010

Другой способ узнать, установлен ли модуль, но отключен, с помощью:

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>
2 голосов
/ 28 февраля 2012

Вы можете проверить, существует ли модуль при установке, используя этот фрагмент Mage::getConfig()->getNode('modules/Mage_Paypal') возвращает FALSE, если не существует

1 голос
/ 29 ноября 2010

в объявлении вашего модуля, попробуйте добавить элемент depends, как на этой странице .Это, вероятно, вызовет исключение, которое вы можете обработать с помощью блока try / catch.

0 голосов
/ 13 августа 2015

В любой класс, модель, контроллер или даже 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...