it-swarm.com.de

PHP: Überprüfen Sie, ob ein Modul auf der aktuellen Seite angezeigt wird

Ich habe einige Probleme mit der Überprüfung, ob ein Modul auf der aktuellen Seite angezeigt wird.

Ich habe verschiedene Ansätze mit JModuleHelper Methoden ausprobiert, zB isEnabled, aber es funktioniert nur mit Modultypen, nicht mit Modul "Instanzen".

Ich habe auch versucht, das Modul nach Name oder Position abzurufen, aber die zurückgegebenen Objekte enthalten keine Informationen darüber, welche Menüelemente diesem Modul zugewiesen sind.

Ich habe auch darüber nachgedacht, das Menüelementobjekt oder das Artikelobjekt abzurufen (ich überprüfe dies anhand eines Artikellayouts, überschreibe ~ com_content), konnte jedoch keine Informationen finden, die mir dabei helfen könnten.

Einfach ausgedrückt: Ich muss überprüfen, ob ein Modul derzeit in einer Artikelansicht angezeigt wird.

Ich hoffe jemand konnte mir dabei helfen. Vielen Dank!

1
demi

Nachdem ich einige Zeit damit verbracht hatte, dies in der Artikelkomponente zu überprüfen, habe ich einfach aufgegeben und einen anderen Ansatz gewählt.

Jetzt überprüfe ich tatsächlich, ob das Modul in der Datei index.php Geladen ist.

Hier ist das Snippet, das ich am Ende verwendet habe, um diese Arbeit zu machen:

$app = JFactory::getApplication();
$menu = $app->getMenu()->getActive();
$mod_loaded = false;
$_mods = JModuleHelper::getModules('mymoduleposition');
foreach ($_mods as $key => $mod) {
    foreach ($mod->advancedparams->conditions["menuitems_selection"] as $_key => $_menu_item) {
        if ($_menu_item == $menu->id) {
            $mod_loaded = true;
        }
    }
}

Ich lade Module nach Position mit der JModuleHelper::getModules('position_name') -Methode und überprüfe dann, ob Modulen an dieser Position ein Menüelement mit derselben ID wie das aktuelle Menüelement zugewiesen wurde.

Beachten Sie, dass dies ab dem index.php Der Vorlage funktioniert und irgendwo innerhalb der Artikelkomponente oder anderer Komponenten Probleme verursachen kann.

Hoffe es hilft denen, die ähnliche Probleme haben!

1
demi