J'essaie actuellement de vérifier si un module spécifique est activé en utilisant la JModuleHelper::isEnabled()
de Joomla. Cependant, le problème est qu'il renvoie toujours false , qu'il soit activé ou non.
Après avoir examiné Docs , j'ai écrit ce qui suit:
jimport('joomla.application.module.helper');
$freichat = JModuleHelper::isEnabled('FreiChat-I');
if($freichat) {
$message = 'Enabled';
}
else {
$message = 'Disabled';
}
$application = JFactory::getApplication();
$application->enqueueMessage( $message, 'warning');
J'ai essayé de changer FreiChat-I
à login
, qui renvoie alors toujours true , qu'il soit activé ou désactivé.
Est-ce qu'il y a un bug connu que je ne connais pas ou est-ce que je fais simplement quelque chose de stupide ici?
JModuleHelper::isEnabled()
ne semble prendre en compte aucun type de sensibilité à la casse. Ainsi, par exemple, en utilisant la réponse de @ Bakual, vos options sont en réalité mod_breadcrumbs
Ou breadcrumbs
(et non Breadcrumbs
)
De même, dans votre cas, vous voudriez faire JModuleHelper::isEnabled('freichat')
. En regardant la table, tout sera toujours en minuscule, donc si vous transmettez une lettre majuscule, vous obtiendrez false
.
Notez également que l’extension doit non seulement être installée et activée, mais qu’il existe beaucoup d’instances du module publiées sur le site.
La page API est ici: http://api.joomla.org/cms-3/classes/JModuleHelper.html#method_isEnabled
Vous devez soit transmettre le nom du module ou son dossier. Ainsi, pour le module de gestion du fil d'Ariane, il s'agirait de "Breadcrumbs" ou de "mod_breadcrumbs". Vous ne pouvez pas utiliser le titre du module.
Sans connaître le nom ou le dossier de votre module, je ne peux pas vous en dire plus.
public static function isEnabled($module);
Vérifie si un module est activé. Un module donné ne sera renvoyé que s'il répond aux critères suivants: il est activé, il est attribué à l'élément de menu actuel ou à tous les éléments et l'utilisateur remplit les conditions de niveau d'accès.
Vous pouvez utiliser une requête de base de données à la place:
$db = JFactory::getDbo();
$db->setQuery("SELECT `published` FROM `#__modules` WHERE `title` = 'Breadcrumbs'");
$is_enabled = $db->loadResult();
Merci à tous d'avoir pris le temps de répondre.
Après avoir regardé le #__extensions
table, j’ai remarqué que la colonne enabled
n’était pas mise à jour, même si j’avais désactivé un module, supprimé sa position et l’avoir annulé de toutes les pages.
Finalement, j'ai décidé de lancer une requête dans la base de données pour vérifier l'existence de mod_freichatx
dans la table et affiche le enqueueMessage
en conséquence.