web-dev-qa-db-ja.com

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

Joomla 2.5と3.xの間で、別のコンポーネントがインストールおよび/または有効化されているかどうかを確認する最良の方法は何ですか? JComponentHelperというヘルパークラスが存在しますが、チェックされているコンポーネントが一部のjoomlaバージョンにインストールされていない場合、isEnabled関数は実際にエラーをスローすると思います。

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

12
Spunkie

私はこのように使用します:

// Check for component
if (!JComponentHelper::getComponent('<component name>', true)->enabled)
{
.....
}

<component name>-「com_」接頭辞なし

12
Anibal

これを試して、

データベースをチェックして、コンポーネントがインストールされて有効になっているかどうかを確認してください。

$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'));
}
4
kumarramalingam

コンポーネントが存在しない場合、一部のバージョンでエラーが表示されるのは正しいことです。私が知る限り、JComponentHelper::getComponent('com_name', true)->enabledは、コンポーネントが有効になっているかどうかを確認するのに最適です。

Joomla 3.0以降では、コンポーネントがインストールされていなくてもこれを使用できます。

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

3
David Fritsch