ใน Drupal 8 ฉันต้องการเพิ่มรายการเมนูในแถบเครื่องมือผู้ดูแลระบบที่มีเมนูย่อยที่มีลิงก์ต่างกัน
ฉันจะทำมันได้อย่างไร
ใน Drupal 8 ฉันต้องการเพิ่มรายการเมนูในแถบเครื่องมือผู้ดูแลระบบที่มีเมนูย่อยที่มีลิงก์ต่างกัน
ฉันจะทำมันได้อย่างไร
คำตอบ:
คุณสามารถเพิ่มรายการลงในแถบเครื่องมือผู้ดูแลระบบได้สองวิธี:
เป็นเนื้อหา:
ใน UI /admin/structure/menu/manage/admin
หรือในรหัส:
$item = \Drupal\menu_link_content\Entity\MenuLinkContent::create([
'link' => ['uri' => 'internal:/<front>'],
'title' => 'Front Page',
'menu_name' => 'admin',
]);
$item->save();
หรือในไฟล์การกำหนดค่าคงที่:
system.admin:
title: Administration
route_name: system.admin
weight: 9
menu_name: admin
system.admin_content:
title: Content
description: 'Find and manage content.'
route_name: system.admin_content
parent: system.admin
weight: -10
system.admin_structure:
route_name: system.admin_structure
parent: system.admin
description: 'Administer blocks, content types, menus, etc.'
title: Structure
weight: -8
system.themes_page:
route_name: system.themes_page
title: Appearance
description: 'Select and configure themes.'
parent: system.admin
weight: -6
นี่คือจุดเริ่มต้นของsystem.links.menu.ymlซึ่งกำหนดเมนู admin ที่เรารู้จักจาก D8 คุณสามารถเพิ่มรายการของคุณเองในmymodule.links.menu.yml
แก้ไข:
mymodule_toolbar()
เพื่อเพิ่มรายการไปยังแถวด้านบนใช้เบ็ด นี่คือตัวอย่างจากโมดูลการท่องเที่ยว:
/**
* Implements hook_toolbar().
*/
function tour_toolbar() {
$items = [];
$items['tour'] = [
'#cache' => [
'contexts' => [
'user.permissions',
],
],
];
if (!\Drupal::currentUser()->hasPermission('access tour')) {
return $items;
}
$items['tour'] += array(
'#type' => 'toolbar_item',
'tab' => array(
'#type' => 'html_tag',
'#tag' => 'button',
'#value' => t('Tour'),
'#attributes' => array(
'class' => array('toolbar-icon', 'toolbar-icon-help'),
'aria-pressed' => 'false',
),
),
'#wrapper_attributes' => array(
'class' => array('tour-toolbar-tab', 'hidden'),
'id' => 'toolbar-tab-tour',
),
'#attached' => array(
'library' => array(
'tour/tour',
),
),
);
return $items;
}
hook_toolbar
ToolbarHandler
สำหรับทุกคนที่สงสัยว่าพวกเขาอาจใส่รหัสจากคำตอบก่อนหน้านี้ได้อย่างไร - คุณสามารถใช้มันใน MYMODULE.install ตัวอย่างเช่น
function MYMODULE_install(){
$item = \Drupal\menu_link_content\Entity\MenuLinkContent::create([
'link' => ['uri' => 'internal:/admin/link'],
'title' => 'Link title',
'menu_name' => 'admin',
]);
$item->save();
}