Я хочу изменить тип меню в Drupal 8. В Drupal 7 мы можем добиться этого с помощью hook_menu_alter
function module_menu_alter(&$items) {
$items['admin/config/people/ip-blocking/default'] = array(
'title' => 'Block IP Address',
'type' => MENU_DEFAULT_LOCAL_TASK,
);
}
Точно так же я хочу изменить тип меню в Drupal 8. Как я могу это сделать. Благодарю вас.
Ответы:
Хотя ответ Линуса великолепен, он не дает обратной связи по вашему конкретному вопросу:
В Drupal 8 нет такой вещи, как тип меню. Все, что раньше было типом, теперь совершенно другое. Маршруты, ссылки в меню, локальные задачи, локальные действия. И часто у вас есть несколько вещей. У вас всегда есть маршрут (7.x используется для вызова этого типа обратного вызова). Кроме того, вы добавляете ссылки меню, локальные задачи или действия для этого маршрута.
Таким образом, вы не можете преобразовать ссылку меню, например, в локальную задачу или даже в маршрут к локальной задаче. Единственное, что вы можете сделать, это, например, изменить ссылку меню (которая не имеет ничего общего с указанным выше маршрутом) и создать вместо нее новую локальную задачу.
См. Ответ Линуса за ссылками и дополнительной информацией о том, как сделать каждую из этих вещей.
источник
В Drupal 8 появилась новая система меню, ее нет
hook_menu
и большеhook_menu_alter
нет.Если вы хотите изменить существующий маршрут, он немного сложнее по сравнению с Drupal 7.
В вашем модуле вы должны создать файл класса,
YOURMODULE/src/Routing/CLASSNAME.php
который расширяетсяRouteSubscriberBase
:В качестве примера вы можете взять класс RouteSubsciber модуля узла.
Чтобы ваш RouteSubscriber был распознан, вы также должны создать
YOURMODULE.services.yml
файл в корневом каталоге вашего модуля:Чтобы лучше понять новую систему меню, я бы порекомендовал следующие статьи:
Редактировать: Как уже упоминал Бердир , система меню теперь имеет другую структуру, которая не имеет ничего общего с системой меню D7, поэтому больше не существует такого типа меню.
источник