Подтвердить что ты не робот

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'))

чтобы показать мой код только в том случае, если установлено расширение с ссылкой.

Кто-нибудь знает, как это сделать? Или любые лучшие решения?

4b9b3361

Ответ 1

Попробуйте следующее:

$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

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

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

В Mage_Core_Helper_Abstract.

Также существует метод isModuleOutputEnabled() для проверки того, отключен ли выход модуля в System → Configuration → Advanced → Disable Modules Output.

Ответ 3

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

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

Edit
Только что поняли, что версия этого - с использованием малоизвестного 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>

Ответ 4

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

Ответ 5

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

Ответ 6

В любом классе, модели, контроллере или даже 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>