Drupal 8 - программно отключить или включить ссылку в главной навигации - PullRequest
0 голосов
/ 03 октября 2018

Это касается Drupal 8. Я пытаюсь управлять элементом ссылки в главной навигации.Я хочу включить / отключить элемент программным способом.Я искал, но не могу найти, как это сделать.Я нашел MenuLinkManager, MenuLinkContent, но я не могу делать то, что хочу.Спасибо всем за помощь.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Отключить / включить пункты меню означает показать / скрыть его.Таким образом, мы можем сделать это с помощью кода ниже в файле темы

/**
 * Implements hook_preprocess_menu().
 */
function theme_preprocess_menu(&$variables) {
  if (isset($variables['menu_name']) && $variables['menu_name'] === 'main') {
    foreach($variables['items'] as $key => $item) {
      $path = $item['url']->toString();
      switch($path) {
        case '/menupath':
          unset($variables['items'][$key]); //Remove menu item
        break;          
      }           
    }
  }
} 
0 голосов
/ 03 октября 2018

Вы можете установить модуль Специальные пункты меню https://www.drupal.org/project/special_menu_items

Или сделать это в вашей функции theme_link в вашем template.php

function myTheme_link($variables) {
  if ((isset($variables['path']) && ($variables['path'] == $_GET['q'] || ($variables['path'] == '<front>' && drupal_is_front_page())))) {

    return ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text']));
  } else {
    return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>';
  }
}
...