web-dev-qa-db-fra.com

Vérifier si le module est activé

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?

6
Lodder

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.

4
David Fritsch

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.

4
Bakual

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.

Mise à jour

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();
2
Farahmand

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.

1
Lodder