检查组件是否已安装/启用的最佳方法?


12

在joomla 2.5和3.x之间,检查是否已安装和/或启用另一个组件的最佳方法是什么?存在一个名为的帮助程序类,JComponentHelper但我相信isEnabled如果某些joomla版本未安装要检查的组件,则该函数实际上会引发错误。

这可以像直接建立数据库一样简单,但是我想看看是否有人使用其他类/帮助程序/方法。

Answers:


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中,即使JError::raiseWarning未安装该组件,即使是最新版本(2.5.19)也会抛出一条消息,该消息将输出到最终用户。如果要支持J2.5,则似乎必须使用自己的帮助程序来加载组件。(您可能会制作一个扩展JComponentHelper的新帮助程序,并且_load只需进行较小的更改即可覆盖该函数以获取相同的功能。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.