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

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

Это может быть так же просто, как прямое нажатие на базу данных, но я хотел посмотреть, есть ли другие классы /помощники /методы, которые люди используют.

11 голосов | спросил Spunkie 25 AMpFri, 25 Apr 2014 00:08:55 +040008Friday 2014, 00:08:55

3 ответа


11

Я использую этот способ:

//Проверка компонента
if (! JComponentHelper :: getComponent ('<имя компонента>', true) -> включено)
{
.....
}

<имя компонента> - без префикса "com_"

ответил Anibal 25 AMpFri, 25 Apr 2014 01:56:37 +040056Friday 2014, 01:56:37
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 («Компонент не установлен /включен»));
}
ответил kumarramalingam 25 AMpFri, 25 Apr 2014 11:25:50 +040025Friday 2014, 11:25:50
3

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

В Joomla 3.0 и выше вы можете использовать это, даже если компонент не установлен.

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

ответил David Fritsch 25 AMpFri, 25 Apr 2014 02:44:23 +040044Friday 2014, 02:44:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132