it-swarm.com.de

Wie kann ich das übergeordnete Menüelement für Nicht-Menüansichten aktiv halten?

Vereinfacht gesagt habe ich eine Komponente mit mehreren Ansichten und einem Menü-Setup wie dem folgenden.

Home (Dies ist auch die Joomla-Standardseite)

...

Administrator

  • Benutzer
  • Die Einstellungen

Admin> Users ist eine Ansicht mit der Standardeinstellung, php with display () {...} und o/c eine default.xml für den Menüpunkt. Diese Ansicht enthält auch ein edit.php-Formular, das über dispalyEdit () {} mit dem Namen edit.php angezeigt wird. Das ist alles ziemlich einfach und funktioniert gut. Wenn jedoch das Bearbeitungsformular angezeigt wird, wird im Hauptmenü "HOME" oder die Joomla-Standardseite ausgewählt.

Wie kann ich die Hauptmenüauswahl auf 'Admin' belassen? oder im Allgemeinen, wie man das Elternteil ausgewählt lässt, selbst wenn die Kindansicht KEIN Menüpunkt selbst ist?

Das fühlt sich ziemlich einfach an, aber ich kann keine Antwort finden. Es erscheint sinnlos, dem Menü "Bearbeiten" hinzuzufügen, da es nicht über das Menü aufgerufen werden kann. Irgendwelche Hinweise?

2
Andreas

Ich habe etwas Ähnliches getan, indem ich ein benutzerdefiniertes Layout für das Menü-Modul erstellt und es in meine Vorlage eingefügt habe.

Der Pfad zu diesem Layout sieht folgendermaßen aus: templates/your_template/html/mod_menu/your_custom_layout.php

Das ursprüngliche Layout ist hier: modules/mod_menu/tmpl/default.php

Kopieren Sie den Code von default.php und fügen Sie ihn in your_custom_layout.php ein und passen Sie ihn an.

In meinen Fällen habe ich ein If-else durchgeführt, um zu überprüfen, auf welcher Seite sich der Benutzer befand, und dann dem übergeordneten Menüelement eine "aktive" CSS-Klasse hinzugefügt. In Ihrem Fall können Sie Ihren Admin-Menüpunkt "aktiv" (ausgewählt) machen und den Status "aktiv" (ausgewählt) aus Ihrem Home-Menüpunkt entfernen.

Kurz gesagt, es geht nur darum, CSS-Klassen für aktive/ausgewählte Menüelemente hinzuzufügen/zu entfernen. Welche Klasse hinzugefügt/entfernt werden soll, hängt von Ihrer Vorlage ab.

Eine andere Methode ist die Verwendung der Funktion setActive (), die ich jedoch noch nicht verwendet habe. Daher bin ich mir nicht sicher, wie sie funktioniert. Dies ist Beispielcode:

    $app = JFactory::getApplication();
    $menu = $app->getMenu();
    $menu->setActive($menuItemId);

$ menuItemId ist die ID des Menüelements, das Sie als aktiv/ausgewählt festlegen möchten. In Ihrem Beispiel ist es Admin. Sie können sehen, wie es in libraries/cms/router/site.php verwendet wird.

2
Hung Tran