Quiero cambiar el tipo de menú en Drupal 8. En Drupal 7 podemos lograr esto usando 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,
);
}
Del mismo modo, quiero cambiar el tipo de menú en Drupal 8. ¿Cómo puedo hacerlo? Gracias.
Respuestas:
Si bien la respuesta de Linus es excelente, no proporciona comentarios sobre su pregunta específica:
No existe un tipo de menú en Drupal 8. Todo lo que solía ser un tipo ahora es algo completamente diferente. Rutas, enlaces de menú, tareas locales, acciones locales. Y a menudo, tienes múltiples cosas. Siempre tiene una ruta (7.x se utiliza para llamar a este tipo de devolución de llamada). Y además, agrega enlaces de menú, tareas locales o acciones para esa ruta.
Por lo tanto, no puede convertir un enlace de menú a una tarea local, por ejemplo, o incluso una ruta a una tarea local. Lo único que puede hacer es, por ejemplo, alterar un enlace del menú (que no tiene nada que ver con la ruta alterada mencionada anteriormente) y crear una nueva tarea local.
Vea la respuesta de Linus para obtener enlaces y más información sobre cómo hacer cada una de esas cosas.
fuente
Drupal 8 tiene un nuevo sistema de menús, ya no
hook_menu
hay ningunohook_menu_alter
.Si desea modificar una ruta existente, es un poco más complicado en comparación con Drupal 7.
En su módulo, debe crear un archivo de clase
YOURMODULE/src/Routing/CLASSNAME.php
que se extiendaRouteSubscriberBase
:Puede tomar la clase RouteSubsciber del módulo de nodo como ejemplo.
Para permitir que se reconozca su RouteSubscriber, también debe crear un
YOURMODULE.services.yml
archivo en la raíz de su directorio de módulos:Para obtener una mejor visión del nuevo sistema de menús, recomendaría los siguientes artículos:
Editar: como mencionó Berdir , el sistema de menús tiene una estructura diferente ahora, que no tiene nada que ver con el sistema de menús de D7, por lo que ya no existe un tipo de menú.
fuente