Joomla 检查是否在未通知故障的情况下安装了扩展

Joomla 检查是否在未通知故障的情况下安装了扩展,joomla,joomla1.5,joomla2.5,joomla1.7,joomla1.6,Joomla,Joomla1.5,Joomla2.5,Joomla1.7,Joomla1.6,方法JComponentThelper::isEnabled'com_extension',true;检查是否安装了扩展并返回布尔值 由于self::getComponent$选项,$strict,如果组件未安装,函数还将抛出异常通知;在同一个助手类中 如果组件未安装,有没有办法避免通知?您可以使用相同的函数isEnabled并捕获该异常,因此如果引发异常,则组件未安装。检查数据库,查看组件是否已安装并启用 $db = JFactory::getDbo(); $db->setQuery("

方法JComponentThelper::isEnabled'com_extension',true;检查是否安装了扩展并返回布尔值

由于self::getComponent$选项,$strict,如果组件未安装,函数还将抛出异常通知;在同一个助手类中


如果组件未安装,有没有办法避免通知?

您可以使用相同的函数isEnabled并捕获该异常,因此如果引发异常,则组件未安装。

检查数据库,查看组件是否已安装并启用

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

如果$is_enabled的值为1,那么您的组件将被启用。

虽然意识到这是一个老问题,但它也是Google的第一个结果之一,我想分享对我有用的内容,同时避免额外的数据库查询

为了避免出现异常,您还可以检查扩展名的入口点文件是否存在,如:

if (file_exists(JPATH_ADMINISTRATOR . '/components/com_extension/extension.php') && JComponentHelper::isEnabled('com_extension', true))
    {
        // Your code here
    }
退房

JComponentHelper::isInstalled('com_extension');

异常是自动抛出的,如果不显示通知,就无法捕获异常。检查方法的代码,看看是否找到了禁用通知的方法。+1 Stilero。我找不到覆盖核心错误处理的方法。问题是isEnabled试图加载扩展,这反过来会触发内核通过JLog引发错误。请参阅JComponentThelper::\u load以了解更多信息。进一步查看内核后,似乎无论如何都不赞成这种行为。核心JError::raiseWarning已被弃用,取而代之的是PHP执行。对于旧版Joomla 1.5.x,查询是“从组件中选择”启用的,其中name='COM\u name'`