Melhor método para verificar se um componente está instalado / ativado?


12

Entre o joomla 2.5 e 3.x, qual é a melhor maneira de verificar se outro componente está instalado e / ou ativado? Existe uma classe auxiliar chamada, JComponentHelpermas acredito que a isEnabledfunção realmente gerará um erro se o componente que está sendo verificado não estiver instalado em algumas versões do joomla.

Isso pode ser tão simples quanto acessar o banco de dados diretamente, mas eu queria ver se existem outras classes / ajudantes / métodos que as pessoas usam.

Respostas:


12

Eu uso desta maneira:

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

<component name> - sem prefixo "com_"


4

tente isso,

Verifique seu banco de dados para ver se o componente está instalado e ativado.

$db = JFactory::getDbo();
$db->setQuery("SELECT enabled FROM #__extensions WHERE name = 'com_name'");
$is_enabled = $db->loadResult();

se o valor de $ is_enabled for 1, seu componente estará ativado. de outra forma,

if (!JComponentHelper::isEnabled('com_mycomp', true))
{
    JError::raiseError('404', JText('Component not installed / enabled'));
}

3

Você está certo de que algumas versões exibirão um erro se o componente não existir. Tanto quanto sei, JComponentHelper::getComponent('com_name', true)->enabledé a melhor verificação se um componente está ativado.

No Joomla 3.0 e acima, você pode usar isso mesmo se o componente não estiver instalado.

No Joomla 2.5, até a versão mais recente (2.5.19) lança uma JError::raiseWarningmensagem que será enviada ao usuário final se o componente não estiver instalado. Se você deseja dar suporte ao J2.5, parece que você precisaria usar seu próprio auxiliar para carregar o componente. (Você provavelmente pode criar um novo auxiliar que estenda o JComponentHelper e substitua a _loadfunção para obter os mesmos recursos com apenas uma pequena alteração.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.