Làm cách nào tôi có thể thêm các mục vào Thanh công cụ quản trị?


11

Trong Drupal 8, tôi muốn thêm một mục menu vào Thanh công cụ quản trị với menu con, với các liên kết khác nhau.

Tôi làm nó như thế nào?

Câu trả lời:


17

Bạn có thể thêm các mục vào thanh công cụ quản trị theo hai cách:

Như nội dung:

Trong ui /admin/structure/menu/manage/admin

hoặc trong mã:

$item = \Drupal\menu_link_content\Entity\MenuLinkContent::create([
  'link' => ['uri' => 'internal:/<front>'],
  'title' => 'Front Page',
  'menu_name' => 'admin',
]);
$item->save();

Hoặc trong các tệp cấu hình tĩnh:

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

Đây là sự khởi đầu của system.links.menu.yml , định nghĩa menu quản trị như chúng ta biết từ D8. Bạn có thể thêm các mục của riêng bạn trong mymodule.links.menu.yml .

Biên tập:

Để thêm một mục vào hàng trên cùng, sử dụng móc mymodule_toolbar(). Đây là một ví dụ từ mô-đun tour:

/**
 * 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;
}

1
Cảm ơn @ 4k4 nhưng khi tôi cố gắng thêm nó thông qua giao diện người dùng, mục này không xuất hiện ở cấp độ đầu tiên của tùy chọn Quản trị viên của thanh công cụ.
jmzea

2
Để có được một mục ở hàng trên cùng, bạn phải sử dụng một cái móc. Tôi đặt một ví dụ trong câu trả lời.
4k4

1
cảm ơn vì câu trả lời của bạn, cuối cùng tôi sẽ sử dụng mô-đun [Menu Thanh công cụ] ( drupal.org/project/toolbar_menu ) để điều chỉnh những gì tôi cần.
jmzea

Cũng đáng để xem xét mô-đun phát triển và việc thực hiện hook_toolbarvà a ToolbarHandler.
leymannx

@ 4k4: Nơi nào bạn thêm mã đầu tiên?
Ponzio Pilato

4

Đối với tất cả những ai thắc mắc họ có thể đặt mã từ câu trả lời trước - Bạn có thể sử dụng nó trong MYMODULE.install chẳng hạn

function MYMODULE_install(){
    $item = \Drupal\menu_link_content\Entity\MenuLinkContent::create([
      'link' => ['uri' => 'internal:/admin/link'],
      'title' => 'Link title',
      'menu_name' => 'admin',
    ]);
    $item->save();
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.