Bagaimana saya bisa menambahkan item ke Toolbar Admin?

11

Di Drupal 8, saya ingin menambahkan item menu ke Admin Toolbar dengan submenu, dengan tautan berbeda.

Bagaimana saya bisa melakukannya?

jmzea
sumber

Jawaban:

18

Anda dapat menambahkan item ke toolbar admin dengan dua cara:

Sebagai konten:

Di ui /admin/structure/menu/manage/admin

atau dalam kode:

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

Atau dalam file konfigurasi statis:

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

Ini adalah awal dari system.links.menu.yml , yang mendefinisikan menu admin seperti yang kita ketahui dari D8. Anda dapat menambahkan entri Anda sendiri di mymodule.links.menu.yml .

Edit:

Untuk menambahkan item ke baris atas, gunakan pengait mymodule_toolbar(). Ini adalah contoh dari modul tur:

/**
 * 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;
}
4k4
sumber
1
Terima kasih @ 4k4 tetapi ketika saya mencoba menambahkannya melalui UI item tidak muncul di tingkat pertama dari opsi Administer pada bilah alat.
jmzea
2
Untuk mendapatkan item di baris atas, Anda harus menggunakan kail. Saya memberi contoh dalam jawaban.
4k4
1
terima kasih atas jawaban Anda, pada akhirnya saya akan menggunakan modul [Menu Toolbar] ( drupal.org/project/toolbar_menu ) yang beradaptasi dengan apa yang saya butuhkan.
jmzea
Juga layak untuk melihat modul devel dan implementasinya dari hook_toolbardan a ToolbarHandler.
leymannx
@ 4k4: Di mana Anda menambahkan kode pertama?
Ponzio Pilato
4

Untuk semua yang bertanya-tanya di mana mereka dapat meletakkan kode dari jawaban sebelumnya - Anda dapat menggunakannya di MYMODULE.install misalnya

function MYMODULE_install(){
    $item = \Drupal\menu_link_content\Entity\MenuLinkContent::create([
      'link' => ['uri' => 'internal:/admin/link'],
      'title' => 'Link title',
      'menu_name' => 'admin',
    ]);
    $item->save();
}
Szymon Dworzecki
sumber