Làm cách nào để hiển thị một mục menu chỉ dành cho người dùng ẩn danh?


6

Tôi muốn hiển thị tab "Tham gia ngay" trên menu chính chỉ dành cho người dùng ẩn danh.

Trong quá khứ tôi đã sử dụng Menu cho mỗi mô-đun Vai trò thực hiện chính xác điều đó.

Vì nó chỉ có một tab nên tôi muốn sử dụng 5 hoặc 10 dòng mã. Tôi nên sử dụng hook nào và các chức năng để kiểm tra vai trò người dùng hiện tại và thêm một mục menu (hoặc ẩn nó cho người dùng đã đăng nhập)?


1
Hóa ra khi bạn tạo một mục menu với đường dẫn "người dùng / đăng ký" Drupal sẽ tự động ẩn nó sau khi bạn đăng nhập. Sweeeeeeeeet
uwe

1
Hãy chấp nhận một câu trả lời hoặc tự trả lời câu hỏi và chấp nhận nó. Để lại câu hỏi chưa được trả lời có nghĩa là nhiều người sẽ đến để kiểm tra nó chỉ để nhận ra không còn gì để làm ở đây.
Alex Weber

Câu trả lời:


10

Tôi nghĩ rằng cách đơn giản nhất sẽ là ghi đè lên access callbackđường dẫn mà liên kết menu của bạn sẽ được trỏ đến. Bạn có thể thực hiện việc này trong một mô-đun tùy chỉnh với hook_menu_alter()và sử dụng user_is_anonymous()làm chức năng gọi lại:

function MYMODULE_menu_alter(&$items) {
  $items['path/to/page']['access callback'] = 'user_is_anonymous';
}

Nếu bạn thêm một liên kết menu cho đường dẫn này, hệ thống menu của Drupal sẽ tôn trọng cuộc gọi lại truy cập và liên kết sẽ không được hiển thị cho bất kỳ ai đăng nhập.

Sử dụng phương pháp này cũng sẽ đảm bảo rằng người dùng đã đăng nhập không thể truy cập trực tiếp vào trang, đây có thể là một điều tốt.


7
  1. Tạo chế độ xem và chỉ cho phép ẩn danh để xem nó
  2. Sử dụng mô-đun truy cập nút để đặt quyền
  3. Tạo một loại nội dung mới cho nội dung chỉ có thể xem được bởi người dùng ẩn danh. đặt ẩn danh là những người duy nhất có quyền xem nội dung đó.
  4. Tạo một mô-đun tùy chỉnh cho chỉ trang đó.

3 là cách tiếp cận được lựa chọn của tôi. Tôi thích ý tưởng có loại tại chỗ nên tôi cần thêm nội dung không phải thành viên trong tương lai.


btw làm theo cách này tự động ẩn và hiển thị nội dung trong các menu của bạn dựa trên sự cho phép
Aaron Ortega
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.