관리자 툴바에 항목을 추가하려면 어떻게합니까?


11

Drupal 8에서는 다른 링크가있는 하위 메뉴가있는 관리 도구 모음에 메뉴 항목을 추가하려고합니다.

어떻게하니?

답변:


18

다음 두 가지 방법으로 관리 도구 모음에 항목을 추가 할 수 있습니다.

내용으로 :

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 의 시작으로 D8에서 알 수있는 관리 메뉴를 정의합니다. mymodule.links.menu.yml에 자신의 항목을 추가 할 수 있습니다 .

편집하다:

맨 위 행에 항목을 추가하려면 hook을 사용하십시오 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;
}

1
@ 4k4에게 감사하지만 UI를 통해 추가하려고하면 도구 모음의 관리 옵션의 첫 번째 수준에 항목이 나타나지 않습니다.
jmzea

2
맨 윗줄에 항목을 가져 오려면 후크를 사용해야합니다. 나는 대답에 예를 넣었다.
4k4

1
답을 주셔서 감사합니다. 결국에는 내가 원하는 것에 적응하는 [도구 모음 메뉴] ( drupal.org/project/toolbar_menu ) 모듈을 사용 하겠습니다.
jmzea

또한 가치는 a를 (STABLE) 모듈을보고 자신의 구현해야하는 hook_toolbar과를 ToolbarHandler.
leymannx

@ 4k4 : 첫 번째 코드는 어디에 추가합니까?
Ponzio Pilato

4

이전 답변의 코드를 어디에 넣을지 궁금해하는 모든 사람들을 위해 – 예를 들어 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();
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.