मैं व्यवस्थापक टूलबार में आइटम कैसे जोड़ सकता हूं?


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 की शुरुआत है , जो व्यवस्थापक मेनू को परिभाषित करता है जैसा कि हम इसे डी 8 से जानते हैं। आप 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;
}

1
धन्यवाद @ 4k4, लेकिन जब मैं इसे UI के माध्यम से जोड़ने का प्रयास करता हूं, तो टूलबार के व्यवस्थापक विकल्प के पहले स्तर में आइटम दिखाई नहीं देता है।
jmzea

2
शीर्ष पंक्ति में एक आइटम प्राप्त करने के लिए, आपको एक हुक का उपयोग करना होगा। मैंने जवाब में एक उदाहरण दिया।
4k4

1
आपके उत्तर के लिए धन्यवाद, अंत में मैं मॉड्यूल [टूलबार मेनू] ( drupal.org/project/toolbar_menu ) का उपयोग करने जा रहा हूं जो मुझे आवश्यकता है, का पालन करता है।
jmzea

इसके अलावा devel मॉड्यूल और उनके कार्यान्वयन hook_toolbarऔर ए पर एक नज़र रखने के लायक है ToolbarHandler
लेमनकैंस

@ 4k4: आप पहला कोड कहां जोड़ते हैं?
पोनजियो पिलातो

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();
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.