উত্তর:
মেনু আইটেমটি স্বয়ংক্রিয়ভাবে তৈরি করার জন্য hook_update_Nএটি ফাইলের mymodule.installএকটিতে স্থাপন করা যেতে পারে এবং ডাটাবেস আপডেট হওয়ার পরে এটি চালিত হবে (/update.php):
use Drupal\menu_link_content\Entity\MenuLinkContent;
$items = array(
'1' => 'Menuitem 1',
'2' => 'Menuitem 2',
'3' => 'Menuitem 3'
);
foreach($items as $nid => $title) {
$menu_link = MenuLinkContent::create([
'title' => $title,
'link' => ['uri' => 'internal:/node/' . $nid],
'menu_name' => 'main',
'expanded' => TRUE,
]);
$menu_link->save();
}
আপনি প্রোগ্রামগতভাবে একটি সম্পূর্ণ মেনু তৈরি করতে পারেন:
\Drupal::entityTypeManager()
->getStorage('menu')
->create([
'id' => 'menu_test',
'label' => 'Test menu',
'description' => 'Description text',
])
->save();
আপনি যদি মডিউল-সংজ্ঞায়িত মেনু লিঙ্কগুলি তৈরি করতে চান তবে আপনার কাস্টম_মডিউল.লিংকস.মেনু.আইএমএল ফাইলটিতে এই জাতীয় উদাহরণ যুক্ত করুন:
custom_module.admin_item_1:
title: 'New Admin Item 1'
parent: system.admin
description: 'Description of link goes here.'
route_name: view.some_view_id.page_1
parent(alচ্ছিক) হ'ল টেবিলের idপিতামাতার কলাম menu_treeএবং route_nameড্রুপলের অভ্যন্তরীণ রুট আইডি যেখানে আপনি মেনু আইটেমটির সাথে লিঙ্ক করতে চান। এটা menu_treeযেমন টেবিলে আছে route_name।
দেখুন মডিউল-সংজ্ঞায়িত মেনু লিঙ্ক প্রদান এবং একটি মেনু লিঙ্ক যুক্ত করুন আরো বিস্তারিত জানার এবং বিকল্পের জন্য।
@ স্পোরঝের উত্তরটি প্রসারিত করতে এবং @ ম্যাট থেকে দেওয়া মন্তব্যে জবাব দিতে, আপনি যদি অন্যটির ভিতরে কোনও মেনু আইটেম বাসাতে চান তবে আপনাকে প্যারেন্ট আইডি নিতে হবে এবং এটি 'পিতামাতার' হিসাবে সেট করতে হবে। উদাহরণ হিসাবে এই কোডটি $top_levelনীচের ভেরিয়েবলটি ব্যবহার করে উপরের স্তরের অভ্যন্তরে আইটেমটি বাসা করে ।
$my_menu = \Drupal::entityTypeManager()->getStorage('menu_link_content')
->loadByProperties(['menu_name' => 'my-menu-name']);
foreach ($my_menu as $menu_item) {
$parent_id = $menu_item->getParentId();
if (!empty($parent_id) {
$top_level = $parent_id;
break;
}
}
$menu_link = MenuLinkContent::create([
'title' => 'My menu link title',
'link' => ['uri' => 'internal:/my/path'],
'menu_name' => 'my-menu-name',
'parent' => $top_level,
'expanded' => TRUE,
'weight' => 0,
]);
$menu_link->save();