回答:
これを試して、
データベースをチェックして、コンポーネントがインストールされ有効になっているかどうかを確認してください。
$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
関数をオーバーライドして、わずかな変更を加えるだけで同じ機能を取得する新しいヘルパーを作成できます。)