データベースにメニュー項目を手動で追加しようとしました。 #__menu
テーブルの2つのフィールドに気付いたときは、 この質問 を参照してください。 2ずつ自動増加しているように見えます。たとえば、最新のメニューアイテムに{lft:121、rgt:122}がある場合、新しいメニューアイテムには{lft:123、rgt、124}があります。簡単な検索で、それらが「ネストされたモデル」と呼ばれるものに関連していることがわかります。私は他のJoomlaテーブルを調べます。多くの場合、これらの2つのフィールドもあります。
それらが何であるかを理解せず、テーブルに新しいレコードを追加し、自動インクリメントを維持しながら、各新しいレコードにこれら2つのフィールドを指定しました。
今日、私はバックエンドを介して新しいメニュー項目を追加して、このエラーメッセージを取得しようとしました:
次のエラーで保存が失敗しました:例外「UnexpectedValueException」とメッセージ「MenusTableMenu :: _ getNode(1、)failed。」 /home/p/public_html/libraries/joomla/table/nested.php:1532スタックトレース:#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( 'co m_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 {メイン}
nested
がこの問題に関係しているので、無視した2つのフィールドと関係があると思います。これを修正するには?
PS、私はいくつかのPHPレコードを#__menu
に追加するためにハードコーディングしました。これも問題の一部であると思います。#__menu
以外のメニュー項目を追加しすぎると、私が世話をする必要がある他のテーブルはありますか?
LftおよびrftコードはJoomlaで非常に古いものであり、コア機能のサブセットでのみ使用されます。基本的には...
テーブルに項目を追加すると、メニューを「再構築」する必要がある場合があります。これは、基本的にすべてのlftとrftの値を設定するメニューマネージャーの上部にあるボタンです。
プログラムでメニュー項目をデータベースに追加する場合は、後でメニュー項目を「再構築」する必要がある場合があります。
参考文献
単に-それはサブセットで注文するためのものです。それに関する実際の情報が必要な場合-Wiki「ネストされたセット」を参照してください
Joomlaとカスタムを介したメニュー項目の追加についてPHP-ここで提供されているものを使用するのは簡単です https://docs.joomla.org/Using_nested_sets
注意すべき点について-#__assetsテーブルもネストされたセットを使用します