Hay una mejor manera de hacer esto. Lo que desea hacer es crear su propio complemento y extender la clase MenuLinkDefault. El mejor lugar para buscar es el módulo Drupal / Usuario que proporciona la implementación LoginLogoutMenuLink.
Puede definir su propio complemento si desea, por ejemplo, cambiar el texto o la lógica. Alternativamente, puede simplemente apuntarlo al complemento existente para ahorrar tiempo y simplemente poner el implícito existente. Aquí hay un código de muestra:
Versión simple:
Versión avanzada:
- Copie el complemento en su
my_module/src/Plugin/Menu/
carpeta
- Cámbiele el nombre de LoginLogoutMenuLink a MyLoginLogoutMenuLink
- Actualice el espacio de nombres para reflejar su ubicación, por ejemplo
namespace Drupal\my_module\Plugin\Menu;
- En el archivo cambia
class LoginLogoutMenuLink extends MenuLinkDefault
aclass MyLoginLogoutMenuLink extends MenuLinkDefault
- Cree uno
my_module.links.menu.yml
según lo anterior, pero asegúrese de nombrar la clase como la ha nombrado ahora y apunte a su módulo. Ver ejemplo a continuación.
Su my_module/src/Plugin/Menu/MyLoginLogoutMenuLink.php
debe buscar la siguiente manera:
namespace Drupal\my_module\Plugin\Menu;
use Drupal\Core\Menu\MenuLinkDefault;
use Drupal\Core\Menu\StaticMenuLinkOverridesInterface;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* A menu link that shows "Log in" or "Log out" as appropriate.
*/
class MyLoginLogoutMenuLink extends MenuLinkDefault {
...
Su my_module/my_module.links.menu.yml
debe buscar la siguiente manera:
my_module.logout:
weight: 10
menu_name: my-custom-menu
class: Drupal\my_module\Plugin\Menu\MyLoginLogoutMenuLink
Espero que esto ayude a alguien.