it-swarm-es.tech

¿El mejor método para verificar si un componente está instalado / habilitado?

Entre joomla 2.5 y 3.x, ¿cuál es la mejor manera de verificar si otro componente está instalado y/o habilitado? Existe una clase auxiliar llamada JComponentHelper pero creo que la función isEnabled arrojará un error si el componente que se está verificando no está instalado en algunas versiones de Joomla.

Esto puede ser tan simple como acceder directamente a la base de datos, pero quería ver si hay otras clases/ayudantes/métodos que la gente usa.

12
Spunkie

Yo uso de esta manera:

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

<component name> - sin el prefijo "com_"

12
Anibal

prueba esto,

Verifique su base de datos para ver si el componente está instalado y habilitado.

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

si el valor de $ is_enabled es 1, entonces su componente está habilitado. de otra manera,

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

Tiene razón en que algunas versiones mostrarán un error si el componente no existe. Hasta donde yo sé JComponentHelper::getComponent('com_name', true)->enabled es la mejor verificación si un componente está habilitado.

En Joomla 3.0 y superior, puede usar esto incluso si el componente no está instalado.

En Joomla 2.5, incluso la última versión (2.5.19) arrojará un JError::raiseWarning mensaje que se enviará al usuario final si el componente no está instalado. Si desea admitir J2.5, parecería que tendría que usar su propio ayudante para cargar el componente. (Probablemente podría hacer un nuevo ayudante que extienda JComponentHelper y simplemente anule el _load función para obtener las mismas funciones con solo el cambio menor).

3
David Fritsch