Найкращий спосіб перевірити, чи компонент встановлений / включений?


12

Між Joomla 2.5 та 3.x, який найкращий спосіб перевірити, чи інший компонент встановлений та / або включений? Існує клас помічників, який називається, JComponentHelperале я вважаю, що isEnabledфункція насправді призведе до помилки, якщо компонент, що перевіряється, не встановлений у деяких версіях Joomla.

Це може бути таким же простим, як безпосередньо натискання на базу даних, але я хотів побачити, чи є інші класи / помічники / методи, якими користуються люди.

Відповіді:


12

Я використовую такий спосіб:

// Check for component
if (!JComponentHelper::getComponent('<component name>', true)->enabled)
{
.....
}

<component name> - без префікса "com_"


4

спробуйте це,

Перевірте свою базу даних, щоб побачити, чи встановлений та включений компонент.

$db = JFactory::getDbo();
$db->setQuery("SELECT enabled FROM #__extensions WHERE name = 'com_name'");
$is_enabled = $db->loadResult();

якщо значення $ is_enabled дорівнює 1, то ваш компонент увімкнено. інакше,

if (!JComponentHelper::isEnabled('com_mycomp', true))
{
    JError::raiseError('404', JText('Component not installed / enabled'));
}

3

Ви праві, що в деяких версіях з’явиться помилка, якщо компонент не існує. Наскільки мені відомо JComponentHelper::getComponent('com_name', true)->enabled, найкраще перевірити, чи включений компонент.

В Joomla 3.0 і вище, ви можете використовувати це, навіть якщо компонент не встановлений.

У Joomla 2.5 навіть останній випуск (2.5.19) передасть JError::raiseWarningповідомлення, яке буде виведено кінцевому користувачеві, якщо компонент не встановлений. Якщо ви хочете підтримати J2.5, то, здається, вам доведеться використовувати власний помічник для завантаження компонента. (Можливо, ви могли б створити нового помічника, який розширює JComponentHelper і просто переосмислює _loadфункцію, щоб отримати ті самі функції лише з незначною зміною.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.