Làm cách nào để thêm liên kết Đăng nhập / Đăng xuất trong menu Điều hướng chính?


8

Làm cách nào để thêm liên kết Đăng nhập vào menu "Điều hướng chính"?

Khi người dùng nhấp vào liên kết, nó sẽ đưa họ đến trang / user / đăng nhập. Khi họ đăng nhập, liên kết sẽ thay đổi thành "Đăng xuất" thay vì "Đăng nhập".

Có cách nào để thêm một liên kết như vậy?


Tôi không biết bạn đang sử dụng chủ đề nào, nhưng chủ đề Bootstrap 3 cho drupal 8 không cung cấp tính năng này theo mặc định. Bạn có thể vô hiệu hóa mục tài khoản của tôi từ khối. Vì vậy, thanh điều hướng chính sẽ có Đăng nhập / Đăng xuất ở phía bên tay phải và Đăng nhập chỉ xuất hiện khi không có ai đăng nhập và nó sẽ biến mất khi bất kỳ ai đăng nhập.
CodeNext

Tôi đang sử dụng chủ đề Bootstrap 3 cho Drupal 8. Tôi đã làm những gì bạn đã làm, vô hiệu hóa khối Tài khoản của tôi (menu Tài khoản người dùng), nhưng không có liên kết Đăng nhập / Đăng xuất ở góc bên phải. Có thiếu điều gì không?
GTS Joe

Tôi vừa đăng trong phần trả lời với hình ảnh, vì vậy chúng ta có thể thảo luận thêm về điều đó.
CodeNext

Bạn không phải vô hiệu hóa toàn bộ khối? làm theo các bước với tôi đã đề cập trong câu trả lời.
CodeNext

Câu trả lời:


10

Chúng tôi không cần phụ thuộc vào chủ đề Bootstrap hoặc các kỹ năng lập trình của chúng tôi để di chuyển liên kết " Đăng xuất " trên bất kỳ menu nào khác. Drupal cho phép chúng tôi làm cho nó dễ dàng.

chỉnh sửa Đăng xuất liên kết

chuyển sang menu khác

Ngoài ra, chúng tôi chỉ có thể tạo hai liên kết " Đăng nhập cho tôi tại đây " và " Đưa tôi ra khỏi đó " với các đường dẫn / user / login/ user / logout tương ứng. Điều này tốt hơn bởi vì không giống như liên kết "Đăng xuất" hệ thống, nó cho phép chúng tôi tạo ra nhiều liên kết đăng nhập / đăng xuất như chúng tôi muốn với các thuộc tính tùy chỉnh. Khi người dùng đăng nhập, họ sẽ chỉ thấy liên kết " Đăng xuất " và ngược lại. Nhắc nhở duy nhất là bạn sẽ thấy cả hai liên kết với nhau vì bạn đã đăng nhập tại thời điểm kiểm tra các liên kết. Và điều này là bình thường vì bạn có quyền " Liên kết đến bất kỳ trang nào " với tư cách quản trị viên. Vô hiệu hóa quyền này và thử lại.


4

Tóm lại, bạn tạo 2 phiên bản Menu khác nhau, một phiên bản có đăng nhập, phiên bản khác có đăng xuất và cung cấp cho mỗi phiên bản vai trò hiển thị khác nhau.

1) Chỉnh sửa menu và thêm Liên kết đăng xuất.

2) Bây giờ tất cả những gì bạn phải làm là cấu hình khối liên kết menu chính của bạn nhập mô tả hình ảnh ở đây

Sau đó, trong Vai trò, đánh dấu chọn users Người dùng được xác thực và cả ☑ Quản trị viên

nhập mô tả hình ảnh ở đây

3) Bây giờ tạo một Menu khác ( /admin/structure/menu) có liên kết "đăng nhập" và tất cả các liên kết menu khác mà bạn cần.

4) Sau đó, đi tới các khối ( /admin/structure/block) trong Menu chính (Giả sử bạn đang sử dụng Bartik, có thể có một tên khác nếu bạn đang sử dụng một chủ đề tùy chỉnh), nhấp vào thêm và thêm Menu bạn vừa tạo và định cấu hình nó. Lần này cho Vai trò, chỉ đánh dấu chọn ☑ Ẩn danh


Tôi đã thực hiện đề xuất của bạn, nhưng khối menu tùy chỉnh tôi tạo phá vỡ các kiểu liên kết (tôi đang sử dụng chủ đề Bootstrap). Mặc dù nó hoạt động đúng chức năng, tôi không thể sử dụng phương pháp này vì nó phá vỡ các kiểu trong khối menu mới.
GTS Joe

Đừng bỏ cuộc. Nếu người tạo chủ đề boostrap có thể thêm div boostrap vào đó, thì bạn cũng có thể:)
Không Sssweat

3

Có một cách tốt hơn để làm điều này. Những gì bạn muốn làm là tạo plugin của riêng bạn và mở rộng lớp MenuLinkDefault. Nơi tốt nhất để tìm là mô-đun Drupal / Người dùng cung cấp triển khai LoginLogoutMothyLink.

Bạn có thể xác định plugin của riêng mình nếu bạn muốn thay đổi văn bản hoặc logic. Ngoài ra, bạn có thể chỉ cần trỏ nó vào plugin hiện có để tiết kiệm thời gian cho bản thân và chỉ cần đặt hàm giả hiện có. Đây là một số mã mẫu:

Phiên bản đơn giản:

  • Tạo nên my_module/my_module.links.menu.yml

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

Phiên bản nâng cao:

  • Sao chép plugin vào my_module/src/Plugin/Menu/thư mục của bạn
  • Đổi tên nó từ LoginLogoutMothyLink thành MyLoginLogoutMothyLink
  • Cập nhật không gian tên để phản ánh vị trí của bạn, vd namespace Drupal\my_module\Plugin\Menu;
  • Trong tập tin thay đổi class LoginLogoutMenuLink extends MenuLinkDefaultthànhclass MyLoginLogoutMenuLink extends MenuLinkDefault
  • Tạo một my_module.links.menu.ymlnhư trên, nhưng đảm bảo bạn đặt tên lớp như bạn đã đặt tên bây giờ và trỏ nó vào mô-đun của bạn. Xem ví dụ dưới đây.

Bạn my_module/src/Plugin/Menu/MyLoginLogoutMenuLink.phpnên xem như sau:

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 {
...

Bạn my_module/my_module.links.menu.ymlnên xem như sau:

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

Tôi hi vọng điêu nay se giup được ai đo.


2

Bạn có thể làm điều này với chủ đề Bootstrap 3 Drupal 8 vì chủ đề đó cung cấp tính năng này theo mặc định. Tôi đang đăng hình ảnh, của trang web thử nghiệm 8 drupal của tôi. Một với trang Đăng nhập và một với trang Đăng xuất.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Bạn đang tìm kiếm loại điều như vậy?

Thực hiện theo các bước sau.

1. Chuyển đến Cấu trúc> Khối. Và đảm bảo cấu hình sau trong phần Điều hướng.

nhập mô tả hình ảnh ở đây

2. Chuyển đến Cấu trúc> Menu> Menu Tài khoản người dùng và vô hiệu hóa Tài khoản của tôi, như được hiển thị trong hình ảnh sau đây.

nhập mô tả hình ảnh ở đây

Vì vậy, menu Điều hướng chính của bạn sẽ chỉ hiển thị Đăng nhập và Đăng xuất, như tôi đã đăng trong cặp ảnh đầu tiên.


Bạn đang tìm kiếm điều này? nó có hoạt động không
CodeNext

1

Nếu bạn sử dụng chương trình con Bootstrap, bạn có thể sửa đổi mã này để đáp ứng nhu cầu của bạn:

<?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; ?>    

Đặt mã này trong page.tpl.php trong subtheme / samples / bên trong khối, nơi bạn cần:

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

Tôi đặt nó sau dòng 90, trong trường hợp nó không bị sập trên thiết bị di động, nếu cần thiết phải gấp lại sau:

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

1

Lập trình, bạn có thể thực hiện điều này thông qua .links.menu.ymltập tin mô-đun của riêng bạn . Sau đây đặt các liên kết này trong menu "Chính":

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

Vì "route_name" mà mỗi người trong số này đang gọi đã chỉ định yêu cầu đăng nhập / đăng xuất (xem https://api.drupal.org/api/drupal/core%21modules%21user%21user.routing.yml/8.4.x ), các liên kết sẽ hiển thị tùy thuộc vào trạng thái đăng nhập.


Không hoạt động, vẫn hiển thị cả hai liên kết
Không có Sssweat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.