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


12

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, JComponentHelperpero creo que la isEnabledfunción realmente 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.

Respuestas:


12

Yo uso de esta manera:

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

<component name> - sin el prefijo "com_"


4

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

3

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

En Joomla 3.0 y versiones posteriores, 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::raiseWarningmensaje que se enviará al usuario final si el componente no está instalado. Si desea admitir J2.5, parece 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 la _loadfunción para obtener las mismas funciones con solo el cambio menor).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.