メソッド 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
は有効です。
これは古い質問であることに気づきましたが、これは Google の最初の結果の 1 つでもあるため、余分なデータベース クエリを避けながら、何がうまくいくかを共有したいと思いました。
例外を回避するために、次のように拡張機能のエントリ ポイント ファイルが存在するかどうかを確認することもできます。
if (file_exists(JPATH_ADMINISTRATOR . '/components/com_extension/extension.php') && JComponentHelper::isEnabled('com_extension', true))
{
// Your code here
}
チェックアウト
JComponentHelper::isInstalled('com_extension');
同じ関数 isEnabled を使用してその例外をキャッチできます。そのため、例外がスローされた場合、コンポーネントはインストールされません。