it-swarm.dev

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

Tra joomla 2.5 e 3.x qual è il modo migliore per verificare se un altro componente è installato e/o abilitato? Esiste una classe di supporto chiamata JComponentHelper ma credo che la funzione isEnabled 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.

12
Spunkie

Uso in questo modo:

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

<component name> - senza prefisso "com_"

12
Anibal

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

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::raiseWarning messaggio 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 semplicemente il _load funzione per ottenere le stesse funzionalità con solo una piccola modifica.)

3
David Fritsch