Ada cara yang lebih baik untuk melakukan ini. Yang ingin Anda lakukan adalah membuat plugin Anda sendiri dan memperluas kelas MenuLinkDefault. Tempat terbaik untuk melihat adalah modul Drupal / Pengguna yang menyediakan implementasi LoginLogoutMenuLink.
Anda dapat menentukan plugin Anda sendiri jika Anda ingin misalnya mengubah teks atau logika. Atau, Anda bisa mengarahkannya ke plugin yang sudah ada untuk menghemat waktu dan cukup meletakkan implmee yang ada. Berikut ini beberapa contoh kode:
Versi sederhana:
Versi lanjutan:
- Salin plugin ke
my_module/src/Plugin/Menu/folder Anda
- Ganti nama dari LoginLogoutMenuLink ke MyLoginLogoutMenuLink
- Perbarui namespace untuk mencerminkan lokasi Anda, mis
namespace Drupal\my_module\Plugin\Menu;
- Dalam file berubah
class LoginLogoutMenuLink extends MenuLinkDefaultmenjadiclass MyLoginLogoutMenuLink extends MenuLinkDefault
- Buat
my_module.links.menu.ymlper sesuai di atas tetapi pastikan Anda memberi nama kelas seperti yang Anda beri nama sekarang dan arahkan ke modul Anda. Lihat contoh di bawah ini.
Anda my_module/src/Plugin/Menu/MyLoginLogoutMenuLink.phpharus terlihat sebagai berikut:
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 {
...
Anda my_module/my_module.links.menu.ymlharus terlihat sebagai berikut:
my_module.logout:
weight: 10
menu_name: my-custom-menu
class: Drupal\my_module\Plugin\Menu\MyLoginLogoutMenuLink
Saya harap ini membantu seseorang.