it-swarm.com.de

Vollständige Neuerstellung (Löschen, dann Hinzufügen) von Menüelementen über Joomla Framework

Einige frühere Fragen haben sich mit diesem Thema befasst ( wie man Menüpunkte hinzufügt , wie man Menüpunkte versteckt ), aber ich versuche herauszufinden, wie man oder entfernt Leeren Sie ein Menü und füllen Sie es programmgesteuert neu. Die Aufgabe besteht anscheinend aus drei Teilen:

  1. Wie löscht man ein ganzes Menü? Frühere Antworten auf die Manipulation von Menüpunkten zeigen auf JNestedTable für die Menümanipulation, aber ich weiß nicht ' Es wird keine Funktion zum Ausführen dieses Vorgangs angezeigt - nur zum Löschen einer generischen Zeile aus einer Tabelle mithilfe eines Primärschlüsselwerts. Ich könnte dies außerhalb des Joomla Frameworks mit einer SQL-Abfrage tun, aber ich vermute, dass dies der falsche Ansatz ist (da dies die Werte lft und rgt durcheinander bringt):

    LÖSCHEN AUS MENÜ WO Menutyp = 'Name'

  2. Wie fügt man Menüpunkte hinzu? Ich glaube, das wurde hier beantwortet , aber irgendwelche anderen Gedanken?

  3. Nachdem das Menü gelöscht wurde und neue Menüelemente hinzugefügt wurden, wie können Sie das Menü neu erstellen? Ich weiß, dass Sie Menüs über das Backend neu erstellen können, aber wie können machst du es programmatisch?

Vielen Dank!

2
Ryan Hughes

Sie schauen sich am besten com_menu An und studieren, wie Joomla das macht.

Zum Löschen und Hinzufügen ganzer Menüs sehen Sie die entsprechenden Funktionen unter \administrator\components\com_menus\models\menu.php.

Hier gibt es eine Funktion mit dem Namen delete, an die Sie ein Array von Menü-IDs übergeben und die Sie nacheinander in einer foreach-Schleife löschen. Es ist gut kommentiert, hat aber den ominösen Kommentar // TODO: Delete the menu associations - Menu items and Modules Am Ende.

Es hat auch die Funktion save, mit der Menüs erstellt oder bearbeitet werden. Hier übergeben Sie die relevanten Daten, um die Felder bei administrator\components\com_menus\models\forms\menu.xml Abzugleichen. Senden Sie eine ID von 0, wenn es sich um ein neues Menü handelt.

Die Rebuild-Funktion finden Sie unter \administrator\components\com_menus\models\item.php. Dies ist nicht gut kommentiert, aber es sieht so aus, als hätte JTable eine Funktion zum Wiederherstellen.

Diese Datei hat auch die Funktion save für Menüelemente, die auf ähnliche Weise wie das Menü funktioniert.

1
Richard B