質問: プログラムでコンポーネントにメニュー項目を追加する ユーザーが記事を作成した後(または記事のリストから選択した後)に既存のメニューにメニュー項目を追加できるコンポーネントを作成しようとしています。私がソートの例に出くわすことができた最も近いものは、以下にリンクされた答えでしたが、それは2.xのためであり、進むべき道に見えます。しかし、私が気付いたのは、#__ assetsテーブルにデータが追加されたことを示すものがないことです。ここに何か不足しているのですが、バックエンドから追加したときにメニュー項目が作成されると、アセットテーブルにレコードも挿入されます。新しいメニュー項目を挿入したい場合、関連データを#_assetsテーブルに個別に挿入する必要がありますか? https://stackoverflow.com/questions/12651075/programatically-create-menu-item-in-joomla?lq=1
回答: まず、メニュー項目はアセットテーブルに配置されないため、この質問は存在しない問題についてです。質問で提供されているリンクは、joom 2.5および3.xの正しい答えを示しています。ただし、参考のために、モデルのpreparetableの例を示します。$menutable = jtablenested::getinstance('menu'); // which menu you want to add to - $menutype = 'thisismymenusname'; // this is heading menu item but what data you have and require will vary per case - just look at an appropriate row in yr menu table $menudata = array( 'menutype' => $menutype, 'title' => $table->alias, 'alias' => $table->alias, 'path' => $table->alias, 'type' => 'heading', 'component_id' => 0, 'language' => '*', 'published' => 1, ); // this item is at the root so the parent id needs to be 1 $parent_id = 1; $menutable->setlocation($parent_id, 'last-child'); // save is the shortcut method for bind, check and store if (!$menutable->save($menudata)) { $this->seterror($menutable->geterror()); return false; }