it-swarm-es.tech

Compruebe si el módulo está habilitado

Actualmente estoy tratando de verificar si un módulo específico está habilitado usando JModuleHelper::isEnabled() de Joomla, sin embargo, el problema es que siempre devuelve falso , a pesar de si está habilitado o no.

Después de mirar el Docs , he escrito lo siguiente:

jimport('joomla.application.module.helper');        
$freichat = JModuleHelper::isEnabled('FreiChat-I');

if($freichat) {
    $message = 'Enabled';
}
else {
    $message = 'Disabled';
}

$application = JFactory::getApplication();
$application->enqueueMessage( $message, 'warning');

He intentado cambiar FreiChat-I a login, que siempre devuelve verdadero , a pesar de estar habilitado o deshabilitado.

¿Hay algún error conocido que desconozco o simplemente estoy haciendo algo estúpido aquí?

6
Lodder

JModuleHelper::isEnabled() no parece explicar ningún tipo de mayúsculas y minúsculas. Entonces, por ejemplo, usando la respuesta de @ Bakual, ​​sus opciones son en realidad mod_breadcrumbs O breadcrumbs (no Breadcrumbs)

Del mismo modo, en su caso, desearía hacer JModuleHelper::isEnabled('freichat'). Al mirar la tabla, todo siempre estará en minúscula, por lo que si pasa una letra mayúscula, obtendrá false.

Además, tenga en cuenta que la extensión no solo tiene que estar instalada y habilitada, sino que habrá una instancia del módulo publicada en el sitio.

4
David Fritsch

La página API está aquí: http://api.joomla.org/cms-3/classes/JModuleHelper.html#method_isEnabled

Debe pasar el nombre del módulo o la carpeta del mismo. Entonces, para el módulo de migas de pan sería 'Breadcrumbs' o 'mod_breadcrumbs'. No puedes usar el título del módulo.

Sin saber el nombre o la carpeta de su módulo, no puedo decirle más.

4
Bakual

public static function isEnabled($module);

Comprueba si un módulo está habilitado. Un módulo dado solo se devolverá si cumple con los siguientes criterios: está habilitado, está asignado al elemento de menú actual o a todos los elementos, y el usuario cumple con los requisitos de nivel de acceso.

Actualizar

Puede usar una consulta db en su lugar:

$db = JFactory::getDbo();
$db->setQuery("SELECT `published` FROM `#__modules` WHERE `title` = 'Breadcrumbs'");
$is_enabled = $db->loadResult();
2
Farahmand

Gracias a todos por tomarse el tiempo para responder.

Habiendo mirado el #__extensions tabla, noté que la columna enabled no se estaba actualizando, incluso cuando había desactivado un módulo, quitado su posición y sin asignarlo de todas las páginas.

Al final, decidí ejecutar una consulta de base de datos para verificar la existencia de mod_freichatx en la tabla y muestra el enqueueMessage en consecuencia.

1
Lodder