Joomla 2.5と3.xの間で、別のコンポーネントがインストールおよび/または有効化されているかどうかを確認する最良の方法は何ですか? JComponentHelper
というヘルパークラスが存在しますが、チェックされているコンポーネントが一部のjoomlaバージョンにインストールされていない場合、isEnabled
関数は実際にエラーをスローすると思います。
これはデータベースに直接アクセスするのと同じくらい簡単ですが、他のクラス/ヘルパー/メソッドが使用されているかどうかを確認したいと思いました。
私はこのように使用します:
// Check for component
if (!JComponentHelper::getComponent('<component name>', true)->enabled)
{
.....
}
<component name>
-「com_」接頭辞なし
これを試して、
データベースをチェックして、コンポーネントがインストールされて有効になっているかどうかを確認してください。
$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'));
}
コンポーネントが存在しない場合、一部のバージョンでエラーが表示されるのは正しいことです。私が知る限り、JComponentHelper::getComponent('com_name', true)->enabled
は、コンポーネントが有効になっているかどうかを確認するのに最適です。
Joomla 3.0以降では、コンポーネントがインストールされていなくてもこれを使用できます。
Joomla 2.5では、最新のリリース(2.5.19)でもJError::raiseWarning
メッセージがスローされ、コンポーネントがインストールされていない場合にエンドユーザーに出力されます。 J2.5をサポートする場合は、独自のヘルパーを使用してコンポーネントをロードする必要があるように思われます。 (おそらく、JComponentHelperを拡張し、_load
関数をオーバーライドするだけの新しいヘルパーを作成して、わずかな変更だけで同じ機能を取得できます。)