Chcę zmienić typ menu w Drupal 8. W Drupal 7 możemy to osiągnąć za pomocą 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,
);
}
Podobnie chcę zmienić typ menu w Drupal 8. Jak to zrobić. Dziękuję Ci.
Odpowiedzi:
Chociaż odpowiedź Linusa jest świetna, nie zapewnia informacji zwrotnych na temat konkretnego pytania:
W Drupal 8 nie ma czegoś takiego jak typ menu. Wszystko, co kiedyś było typem, jest teraz zupełnie inną rzeczą. Trasy, łącza menu, zadania lokalne, działania lokalne. I często masz wiele rzeczy. Zawsze masz trasę (7.x używane do wywołania zwrotnego tego typu). Ponadto dodajesz łącza menu, lokalne zadania lub działania dla tej trasy.
Tak więc nie można przekonwertować łącza menu na przykład na zadanie lokalne, ani nawet trasy do zadania lokalnego. Jedyne, co możesz zrobić, to np. Zmienić odsyłacz menu (który nie ma nic wspólnego z wyżej wymienioną zmianą trasy) i zamiast tego utworzyć nowe zadanie lokalne.
Zobacz odpowiedź Linusa, aby uzyskać linki i więcej informacji na temat wykonywania tych czynności.
źródło
Drupal 8 ma nowy system menu, nie ma go już
hook_menu
i niehook_menu_alter
ma.Jeśli chcesz zmienić istniejącą trasę, jest to nieco bardziej skomplikowane w porównaniu do Drupala 7.
W swoim module musisz utworzyć plik klasy,
YOURMODULE/src/Routing/CLASSNAME.php
który rozszerzaRouteSubscriberBase
:Przykładem może być klasa RouteSubsciber modułu węzła.
Aby umożliwić rozpoznanie Twojego subskrybenta trasy, musisz również utworzyć
YOURMODULE.services.yml
plik w katalogu głównym katalogu modułów:Aby uzyskać lepszy wgląd w nowy system menu, polecam następujące artykuły:
Edycja: Jak wspomniał Berdir , system menu ma teraz inną strukturę, która nie ma nic wspólnego z systemem menu D7, więc nie ma już czegoś takiego jak typ menu.
źródło