Il metodo migliore per verificare se un componente è installato / abilitato?


12

Tra joomla 2.5 e 3.x qual è il modo migliore per verificare se un altro componente è installato e / o abilitato? Esiste una classe helper chiamata JComponentHelperma credo che la isEnabledfunzione in realtà genererà un errore se il componente da controllare non è installato su alcune versioni di joomla.

Questo può essere semplice come colpire direttamente il database ma volevo vedere se ci sono altre classi / helper / metodi che le persone usano.

Risposte:


12

Uso in questo modo:

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

<component name> - senza prefisso "com_"


4

prova questo,

Controlla il tuo database per vedere se il componente è installato e abilitato.

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

se il valore di $ is_enabled è 1, il componente è abilitato. altrimenti,

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

3

Hai ragione sul fatto che alcune versioni visualizzeranno un errore se il componente non esiste. Per quanto ne so JComponentHelper::getComponent('com_name', true)->enabledè il miglior controllo se un componente è abilitato.

In Joomla 3.0 e versioni successive, puoi utilizzarlo anche se il componente non è installato.

In Joomla 2.5, anche l'ultima versione (2.5.19) genererà un JError::raiseWarningmessaggio che verrà inviato all'utente finale se il componente non è installato. Se si desidera supportare J2.5, sembrerebbe che si debba usare il proprio aiuto per caricare il componente. (Probabilmente potresti creare un nuovo helper che estende JComponentHelper e sovrascrive la _loadfunzione per ottenere le stesse funzionalità con solo una piccola modifica.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.