Лучший способ проверить, установлен ли компонент / включен?


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.