it-swarm.com.de

Überprüfen Sie, ob das Modul aktiviert ist

Ich versuche gerade, mit Joomlas JModuleHelper::isEnabled() zu überprüfen, ob ein bestimmtes Modul aktiviert ist. Das Problem ist jedoch, dass es immer false zurückgibt, obwohl es tatsächlich aktiviert ist aktiviert oder nicht.

Nachdem ich mir Docs angesehen habe, habe ich Folgendes geschrieben:

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

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

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

Ich habe versucht, FreiChat-I In login zu ändern, was dann immer true zurückgibt, obwohl es aktiviert oder deaktiviert ist.

Gibt es einen bekannten Fehler, den ich nicht kenne, oder mache ich hier einfach etwas Dummes?

6
Lodder

JModuleHelper::isEnabled() scheint keine Groß-/Kleinschreibung zu berücksichtigen. Wenn Sie beispielsweise die Antwort von @ Bakual verwenden, sind Ihre Optionen entweder mod_breadcrumbs Oder breadcrumbs (nicht Breadcrumbs).

In Ihrem Fall möchten Sie ebenfalls JModuleHelper::isEnabled('freichat') ausführen. Wenn Sie auf den Tisch schauen, wird immer alles in Kleinbuchstaben geschrieben. Wenn Sie also einen Großbuchstaben eingeben, erhalten Sie false.

Beachten Sie auch, dass die Erweiterung nicht nur installiert und aktiviert werden muss, sondern auch eine Instanz des Moduls auf der Site veröffentlicht wird.

4
David Fritsch

Die API-Seite ist hier: http://api.joomla.org/cms-3/classes/JModuleHelper.html#method_isEnabled

Sie müssen entweder den Namen des Moduls oder den Ordner des Moduls übergeben. Für das Breadcrumbs-Modul wäre es entweder 'Breadcrumbs' oder 'mod_breadcrumbs'. Sie können den Titel des Moduls nicht verwenden.

Ohne den Namen oder den Ordner Ihres Moduls zu kennen, kann ich Ihnen nicht mehr sagen.

4
Bakual

public static function isEnabled($module);

Überprüft, ob ein Modul aktiviert ist. Ein bestimmtes Modul wird nur zurückgegeben, wenn es die folgenden Kriterien erfüllt: Es ist aktiviert, es wird dem aktuellen Menüelement oder allen Elementen zugewiesen und der Benutzer erfüllt die Anforderungen der Zugriffsebene.

Aktualisieren

Sie können stattdessen eine Datenbankabfrage verwenden:

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

Vielen Dank an alle, die sich die Zeit genommen haben zu antworten.

Nachdem ich mir die Tabelle #__extensions Angesehen hatte, bemerkte ich, dass die Spalte enabled nicht aktualisiert wurde, auch wenn ich ein Modul deaktiviert, seine Position entfernt und es von allen Seiten abgemeldet hatte.

Am Ende habe ich beschlossen, eine Datenbankabfrage auszuführen, um das Vorhandensein von mod_freichatx In der Tabelle zu überprüfen und das enqueueMessage entsprechend anzuzeigen.

1
Lodder