Come posso aggiungere elementi alla barra degli strumenti di amministrazione?


11

In Drupal 8, voglio aggiungere una voce di menu alla barra degli strumenti di amministrazione con un sottomenu, con collegamenti diversi.

Come posso farlo?

Risposte:


18

Puoi aggiungere elementi alla barra degli strumenti di amministrazione in due modi:

Come contenuto:

In ui /admin/structure/menu/manage/admin

o nel codice:

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

O nei file di configurazione statici:

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

Questo è l'inizio di system.links.menu.yml , che definisce il menu di amministrazione come lo conosciamo da D8. Puoi aggiungere le tue voci in mymodule.links.menu.yml .

Modificare:

Per aggiungere un elemento alla riga superiore, utilizzare il gancio mymodule_toolbar(). Questo è un esempio del modulo 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
Grazie @ 4k4 ma quando provo ad aggiungerlo tramite l'interfaccia utente l'elemento non viene visualizzato nel primo livello dell'opzione Amministra della barra degli strumenti.
jmzea,

2
Per ottenere un oggetto nella riga superiore, devi usare un gancio. Ho messo un esempio nella risposta.
4k4,

1
grazie per le risposte, alla fine userò il modulo [Menu barra degli strumenti] ( drupal.org/project/toolbar_menu ) che si adatta a ciò di cui ho bisogno.
jmzea,

Vale anche la pena dare un'occhiata al modulo di sviluppo e alla loro implementazione di hook_toolbare a ToolbarHandler.
leymannx,

@ 4k4: dove aggiungi il primo codice?
Ponzio Pilato,

4

Per tutti coloro che si chiedono dove possono inserire il codice dalla risposta precedente, ad esempio è possibile utilizzarlo in 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();
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.