ユーザーが記事を作成した後(または記事のリストから選択した後)に既存のメニューにメニュー項目を追加できるコンポーネントを作成しようとしています。私がソートの例に出くわすことができた最も近いものは、以下にリンクされた答えでしたが、それは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;
}
実際の解決策ではなく、アイデア:
私は最近、カテゴリと記事の構造に基づいてメニューを作成するプラグイン Kazaam! について学びました。
ウェブサイトに記載されているように、All code is open source, and you are completely free to make changes.
。ソースコードを見ると、それがどのように機能するかを確認でき、コードの一部を独自のプロジェクトに使用できるはずです。
私のために働いた最も簡単で最も読みやすいコードはここにあります=> https://webkul.com/blog/menu-item-joomla-rebuild-automatically/