Agregar un enlace en el menú
Ahora que hemos creado un marcador de posición para nuestra página de configuración del módulo, vamos a agregar un enlace al menú. Las instrucciones a continuación muestran cómo crear un enlace de menú para el módulo hello_world en la sección “Desarrollo” de la página “Administrador > Configuración” (http://example.com/admin/config).
En la carpeta raíz de su módulo, cree un nuevo archivo llamado hello_world.links.menu.yml y agregue lo siguiente:
hello_world.admin: title: 'Configuración del módulo Hello' description: 'ejemplo de cómo crear un enlace a la página de configuración de administración' parent: system.admin_config_development route_name: hello_world.content weight: 100
Tenga en cuenta que la primera línea reserva un espacio de nombres, como en nuestro ejemplo de archivo de rutas. También observe el uso de nuestro nombre de ruta en la línea 5 (utilizamos el espacio de nombres de la primera línea del ejemplo de archivo de rutas). El título y la descripción se mostrarán en la sección Desarrollo. La línea parent describe el enlace padre para el menú. En otras palabras, el enlace del menú se creará bajo admin, config, development.
Esto añadirá un enlace a la ruta especificada en hello_world.content (en este ejemplo en hello_world.routing.yml) en las páginas de administración de su sitio, en la pestaña “Configuración” (URL /admin/config) dentro de la sección “Desarrollo”. Por supuesto, deberá limpiar la caché para que los cambios surtan efecto.
Después de limpiar la caché, encontrará el enlace de menú “Configuración del módulo Hello” en la sección Desarrollo de la página de configuración. Al hacer clic en el enlace, se llamará al módulo hello_world.
Consejos adicionales
El archivo .links.menu.yml es bastante flexible. También puede usarlo para enlazar a recursos externos o enlaces:
hello_world.admin: title: 'Configuración del módulo Hello' description: 'ejemplo de cómo crear un enlace a la página de configuración de administración' parent: system.admin_config_development url: http://example.com/this-is-some-example weight: 100 hello_world.admin2: title: 'Configuración del módulo Hello' description: 'ejemplo de cómo crear un enlace a la página de configuración de administración' parent: system.admin_config_development url: internal:/some-internal-path
No editable:
Tenga en cuenta que cuando crea enlaces de menú mediante archivos y módulos personalizados YAML de esta manera, obtiene enlaces de menú que no son editables desde la interfaz de usuario. Solo puede modificar los enlaces a través del archivo YAML. Se consideran gestionados por el módulo, no administrativos. Cuando hace clic en el botón editar para un ítem de menú, verá el mensaje “Este enlace es proporcionado por el módulo XXX. El título y la ruta no pueden ser editados”.
Para crear enlaces de menú editables, necesita hacerlo de la siguiente manera aproximadamente:
$my_menu = \Drupal::entityTypeManager()->getStorage('menu_link_content') ->loadByProperties(['menu_name' => 'my-menu-name']); foreach ($my_menu as $menu_item) { $parent_id = $menu_item->getParentId(); if (!empty($parent_id)) { $top_level = $parent_id; break; } } $menu_link = MenuLinkContent::create([ 'title' => 'Título de mi enlace de menú', 'link' => ['uri' => 'internal:/my/path'], 'menu_name' => 'my-menu-name', 'parent' => $top_level, 'expanded' => TRUE, 'weight' => 0, ]); $menu_link->save();
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.