2016-05-13 3 views
0

Ich habe versucht, Menüelement manuell zur Datenbank hinzuzufügen. Siehe this question, wenn ich diese zwei Felder in der Tabelle #__menu bemerke. Es scheint mir, dass sie sich automatisch um 2 erhöhen. Zum Beispiel, wenn der letzte Menüeintrag {lft: 121, rgt: 122} hat, dann hat ein neuer Menüeintrag {lft: 123, rgt, 124}. Eine kurze Suche zeigt, dass sie mit etwas verbunden sind, das "verschachteltes Modell" genannt wird, und ich sehe mir andere Joomla-Tabellen an, viele haben auch diese zwei Felder.Was ist ein geschachteltes Modell und was könnte es möglicherweise mit Joomlas Menüelement zu tun haben?

Nicht zu verstehen, was sie sind, ich füge nur neue Datensätze in die Tabelle, und ich gab jedem neuen Datensatz diese beiden Felder, die automatische Erhöhung beibehalten.

Heute habe ich versucht, einen neuen Menüpunkt durch Back-End hinzuzufügen und diese Fehlermeldung zu erhalten:

Save failed with the following error: exception 'UnexpectedValueException' with message 'MenusTableMenu::_getNode(1,) failed.' in /home/p/public_html/libraries/joomla/table/nested.php:1532 Stack trace: #0 /home/p/public_html/libraries/joomla/table/nested.php(773): JTableNested->_getNode(1) #1 /home/p/public_html/libraries/legacy/table/menu.php(243): JTableNested->store(false) #2 /home/p/public_html/administrator/components/com_menus/models/item.php(1258): JTableMenu->store() #3 /home/p/public_html/administrator/components/com_menus/controllers/item.php(267): MenusModelItem->save(Array) #4 /home/p/public_html/libraries/legacy/controller/legacy.php(728): MenusControllerItem->save() #5 /home/p/public_html/administrator/components/com_menus/menus.php(18): JControllerLegacy->execute('apply') #6 /home/p/public_html/libraries/cms/component/helper.php(405): require_once('/home/p/public_...') #7 /home/p/public_html/libraries/cms/component/helper.php(380): JComponentHelper::executeComponent('/home/p/public_...') #8 /home/p/public_html/libraries/cms/application/administrator.php(98): JComponentHelper::renderComponent('com_menus') #9 /home/p/public_html/libraries/cms/application/administrator.php(152): JApplicationAdministrator->dispatch() #10 /home/p/public_html/libraries/cms/application/cms.php(257): JApplicationAdministrator->doExecute() #11 /home/p/public_html/administrator/index.php(51): JApplicationCms->execute() #12 {main}

Ich sehe nested in dieser Ausgabe beteiligt ist, so dass ich denke, es ist etwas mit den beiden zu tun hat Felder, die ich ignoriert habe. Wie behebe ich das?

P.S. Ich habe PHP geschrieben, um die Aufnahme in die #__menu aufzunehmen, ich denke, das spielt auch eine Rolle in dem Problem. Too add menu item, neben #__menu, gibt es noch eine andere Tabelle, um die ich mich kümmern muss?

+1

Nie wirklich mit Joomla gearbeitet, aber LFT und Rgt werden nicht automatisch erhöht, so dass Sie die Menühierarchie durch manuelle Einfügung von Daten in die Datenbank durchbrochen haben. Lft und Rgt werden verwendet, um schnell eine Baumstruktur zu durchlaufen oder in diesem Fall zu bestimmen, welches Untermenü zu welchem ​​übergeordneten Menü usw. gehört. Wenn Sie ein neues Untermenü in die Datenbank einfügen, müssen lft und rgt jedes Menüs korrigiert werden. Warum nicht einfach Menüs über das Admin-Panel erstellen? – TheDrot

+0

Ich habe viele k2-Elemente, die ich für jeden von ihnen Menüelement erstellen müssen, tun dies durch Admin-Panel ist zu frustrierend – shenkwen

+0

Danke. Zumindest bestätige ich, dass ich es gebrochen habe. Gott sei Dank, ich habe ein komplettes Backup gemacht, bevor ich das getan habe. – shenkwen

Antwort

0

Menüs werden mithilfe von verschachtelten Sätzen erstellt, was viele sehr nützliche Funktionen ermöglicht, darunter kohärente URL-Benennung, Verschieben von Teilbäumen, bestimmte Aspekte der mehrsprachigen Handhabung und andere Elemente. Wie Sie gelernt haben, können Sie nicht einfach eine Zeile einfügen. Das bedeutet nicht, dass Sie es einzeln über die Verwaltungsschnittstelle ausführen müssen. Je nachdem, ob Sie eine einfache CLI-Anwendung schreiben möchten, um neue Elemente zu erstellen, oder wenn Sie es eher gui-basiert machen möchten, indem Sie beispielsweise eine Unterbaumstruktur kopieren, stehen Ihnen viele Möglichkeiten zur Verfügung damit die Verschachtelung korrekt funktioniert und Sie dann den Text in der Datenbank bearbeiten können.

Verwandte Themen