Bagaimana cara menambahkan tautan Login / Logout di menu navigasi Utama?

8

Bagaimana saya bisa menambahkan tautan Login ke menu "Navigasi Utama"?

Ketika seorang pengguna mengklik tautan, itu akan membawa mereka ke halaman / user / login. Setelah mereka masuk, tautannya harus berubah menjadi "Keluar" dan bukan "Masuk".

Apakah ada cara untuk menambahkan tautan seperti itu?

GTS Joe
sumber
Saya tidak tahu tema mana yang Anda gunakan, Tapi tema Bootstrap 3 untuk drupal 8 memang menyediakan fitur ini secara default. Anda dapat menonaktifkan item Akun saya dari blokir. Jadi bilah navigasi Utama akan memiliki Login / Logout di sisi kanan dan Login muncul hanya ketika tidak ada yang masuk dan akan menghilang ketika ada yang masuk.
CodeNext
Saya menggunakan tema Bootstrap 3 untuk Drupal 8. Saya melakukan apa yang Anda lakukan, menonaktifkan blok Akun saya (menu akun Pengguna), tetapi tidak ada tautan Masuk / Keluar di sudut kanan. Apakah ada sesuatu yang saya lewatkan?
GTS Joe
Saya baru saja memposting di bagian jawaban dengan gambar, sehingga kita bisa membahasnya lebih lanjut.
CodeNext
Anda tidak harus menonaktifkan seluruh blok? ikuti langkah-langkahnya dengan yang saya sebutkan di jawaban.
CodeNext

Jawaban:

10

Kami tidak perlu bergantung pada tema Bootstrap atau kemampuan pemrograman kami untuk memindahkan tautan " Keluar " sistem pada menu lain mana pun. Drupal memungkinkan kita untuk membuatnya dengan mudah.

edit tautan Keluar

pindah ke menu lain

Selain itu kami hanya dapat membuat dua tautan " Log in me here please " khusus dan " Keluarkan aku dari sana " dengan jalur / user / login dan / user / logout secara relatif. Ini lebih baik karena tidak seperti sistem "Log out" tautannya memberi kita untuk membuat banyak link masuk / keluar yang kita inginkan dengan atribut khusus. Saat pengguna masuk, mereka hanya akan melihat tautan " Keluar " dan sebaliknya. Satu-satunya peringatan adalah bahwa Anda mungkin akan melihat kedua tautan bersamaan karena Anda masuk pada saat menguji tautan. Dan ini normal karena Anda memiliki izin " Tautan ke halaman mana saja " sebagai administrator. Nonaktifkan izin ini dan coba lagi.

obat-obatan
sumber
4

Singkatnya, Anda membuat 2 versi Menu yang berbeda, satu dengan login, yang lain dengan logout, dan memberikan peran visibilitas yang berbeda kepada setiap versi.

1) Edit menu , dan tambahkan Logout Link.

2) Sekarang yang harus Anda lakukan adalah mengkonfigurasi blok tautan menu utama Anda masukkan deskripsi gambar di sini

Kemudian di Peran, centang tanda ☑ Pengguna terotentikasi dan juga ☑ Administrator

masukkan deskripsi gambar di sini

3) Sekarang buat Menu lain ( /admin/structure/menu) yang memiliki tautan "login" dan semua tautan menu lain yang Anda butuhkan.

4) Lalu pergi ke blok ( /admin/structure/block) di Menu Utama (Asumsikan Anda menggunakan Bartik, mungkin memiliki nama yang berbeda jika Anda menggunakan tema khusus) klik add, dan tambahkan Menu yang baru Anda buat dan konfigurasikan. Kali ini untuk Peran, hanya tandai ☑ Anonim

Tidak ada Sssweat
sumber
Saya melakukan saran Anda, tetapi blok menu khusus yang saya buat memecah gaya tautan (Saya menggunakan tema Bootstrap). Meskipun berfungsi dengan fungsionalitas, saya tidak dapat menggunakan metode ini karena ini merusak style pada blok menu baru.
GTS Joe
Yah, jangan menyerah. Jika orang yang membuat tema boostrap dapat menambahkan div boostrap ke dalamnya, Anda juga bisa:)
No Sssweat
3

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:

  • Membuat my_module/my_module.links.menu.yml

    my_module.logout:
      weight: 10
      menu_name: my-custom-menu
      class: Drupal\user\Plugin\Menu\LoginLogoutMenuLink
    

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.

Pengembang Web JNP
sumber
2

Anda dapat melakukan ini dengan tema Bootstrap 3 Drupal 8 karena tema itu menyediakan fitur ini secara default. Saya memposting gambar, dari situs percobaan 8 drupal saya. Satu dengan halaman Login dan satu dengan halaman Logout.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Apakah Anda terlihat seperti itu?

Ikuti langkah-langkah berikut.

1. Pergi ke Struktur> Blok. Dan pastikan konfigurasi berikut di bagian Navigasi.

masukkan deskripsi gambar di sini

2. Buka Struktur> Menu> Menu Akun Pengguna dan nonaktifkan Akun saya, seperti yang ditunjukkan pada gambar berikut.

masukkan deskripsi gambar di sini

Jadi, menu Navigasi Utama Anda hanya akan menampilkan Login dan Logout, seperti yang telah saya posting pada pasangan gambar pertama.

CodeNext
sumber
Apakah Anda mencari ini? apa itu bekerja?
CodeNext
1

Jika Anda menggunakan subtitle Bootstrap, Anda dapat memodifikasi kode ini untuk memenuhi kebutuhan Anda:

<?php global $user; if ($user->uid): ?>   
    <a href="/user/logout" type="button" class="navbar-brand" role="button">Logout</a>
<?php endif; ?>    

<?php global $user; if (!$user->uid): ?>   
    <a href="/user" type="button" class="navbar-brand" role="button">Login</a>
<?php endif; ?>    

Masukkan kode ini di page.tpl.php di subtitle / templates / di dalam blok, di mana Anda perlu:

< div class="navbar-header"> ... < /div>

Saya meletakkannya setelah 90-line, dalam hal ini tidak runtuh pada perangkat seluler, jika perlu dilipat setelah:

<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
makbuk
sumber
1

Secara pemrograman, Anda dapat melakukan ini melalui .links.menu.ymlfile modul Anda sendiri . Tempat-tempat berikut menempatkan tautan ini di menu "Utama":

mymodule.sign_in:
  title: 'Sign in'
  parent: system.menu.main
  description: 'Sign in'
  route_name: user.login
  weight: 100
  menu_name: main

mymodule.sign_out:
  title: 'Sign out'
  parent: system.menu.main
  description: 'Sign out'
  route_name: user.logout
  weight: 101
  menu_name: main

Karena "route_name" yang dihubungi masing-masing sudah menentukan persyaratan masuk / keluar (lihat https://api.drupal.org/api/drupal/core%21modules%21user%21user.routing.yml/8.4.x ), tautan akan ditampilkan tergantung pada status login.

markfullmer
sumber
Tidak berfungsi, masih menampilkan kedua tautan
No Sssweat