コンポーネントがインストール/有効化されているかどうかを確認する最良の方法は?


12

joomla 2.5と3.xの間で、別のコンポーネントがインストールおよび/または有効にされているかどうかを確認する最良の方法は何ですか?そこと呼ばれるヘルパークラスを存在するJComponentHelperが、私は信じているisEnabled成分であるが、いくつかのJoomlaのバージョンにインストールされていない場合にチェック機能が実際にエラーがスローされます。

これは、データベースに直接アクセスするのと同じくらい簡単ですが、他のクラス/ヘルパー/メソッドが使用されているかどうかを確認したかったのです。

回答:


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では、最新リリース(2.5.19)JError::raiseWarningでも、コンポーネントがインストールされていない場合にエンドユーザーに出力されるメッセージがスローされます。J2.5をサポートしたい場合、コンポーネントをロードするには独自のヘルパーを使用する必要があるように思われます。(おそらく、JComponentHelperを拡張し、_load関数をオーバーライドして、わずかな変更を加えるだけで同じ機能を取得する新しいヘルパーを作成できます。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.