方法 JComponentHelper::isEnabled('com_extension', true); 检查是否安装了扩展并返回布尔值。
由于 self::getComponent($option, $strict); 导致组件未安装,该函数还会抛出异常通知。在同一个助手类中。
如果未安装组件,有没有办法避免通知?
检查您的数据库以查看该组件是否已安装并启用。
$db = JFactory::getDbo();
$db->setQuery("SELECT enabled FROM #__extensions WHERE name = 'component name'");
$is_enabled = $db->loadResult();
如果值为$is_enabled
,1
则您的组件已启用。
虽然意识到这是一个老问题,但它也是谷歌的第一个结果之一,我想分享对我有用的东西,同时避免额外的数据库查询。
为避免异常,您还可以检查扩展的入口点文件是否存在,例如:
if (file_exists(JPATH_ADMINISTRATOR . '/components/com_extension/extension.php') && JComponentHelper::isEnabled('com_extension', true))
{
// Your code here
}
您可以使用相同的函数 isEnabled 并捕获该异常,因此如果抛出异常,则不会安装该组件。
查看
JComponentHelper::isInstalled('com_extension');