Làm cách nào tôi có thể ẩn một liên kết cụ thể trong menu chính khỏi người dùng ẩn danh mà không hiển thị toàn bộ menu?
Làm cách nào tôi có thể ẩn một liên kết cụ thể trong menu chính khỏi người dùng ẩn danh mà không hiển thị toàn bộ menu?
Câu trả lời:
Bạn không định cấu hình trực tiếp các liên kết trực tiếp mà thay vào đó, bạn định cấu hình quyền của các loại nội dung cụ thể và mọi liên kết đến nội dung của một loại cụ thể sẽ hiển thị hoặc ẩn đi tùy thuộc vào quyền của nội dung mà liên kết trỏ đến .
Bạn có thể định cấu hình quyền trên bất kỳ phần nội dung cụ thể nào bằng cách vào phần Quyền trong Quản trị và tìm loại nội dung bạn muốn hạn chế quyền và định cấu hình các quyền đó (chọn hộp kiểm để xem, tạo, chỉnh sửa, v.v.) về vai trò phù hợp.
Nếu bạn cần định cấu hình quyền truy cập vào các nút / nội dung cụ thể, thì bạn có thể xem Nội dung truy cập .
Bạn có thể làm điều này dễ dàng với một chút mỡ khuỷu tay!
Có hai móc cho điều này tùy thuộc vào việc menu của bạn được tạo bởi một mô-đun hoặc bởi chính Drupal. Trong một mô-đun tùy chỉnh, bạn sẽ sử dụng hook_menu hoặc hook_menu_alter .
Hai hook này có một tham số, access callback
trong đó bạn có thể cung cấp cho nó một hàm trả về BOOL. Nếu chức năng trả về TRUE, quyền truy cập được cho phép và liên kết menu được hiển thị. Nếu FALSE được trả về, truy cập không được phép và liên kết menu không được hiển thị.
//Small example
function <your_module>_menu_alter(&$items) {
// Example - disallow access for anonymous to node 15 from custom module
$items['node/15']['access callback'] = '_accessCheck';
}
Sau đó, tiếp tục xuống bạn xác định cuộc gọi lại:
function _acccessCheck(){
global $user;
if ($user->uid) { // user is logged in
return TRUE;
} // Anonymous
return FALSE;
}
Hy vọng điều này sẽ giúp, mã hóa hạnh phúc!
bạn có thể hạn chế người dùng xem một số liên kết menu bằng cách sử dụng Menu cho mỗi mô-đun vai trò .
Nó cho phép bạn hạn chế quyền truy cập vào các mục menu dựa trên vai trò của người dùng. Vì vậy, bạn có thể ẩn một liên kết menu cụ thể khỏi một vai trò cụ thể và hiển thị nó cho người khác.
Bạn có thể làm nó bằng tay. Có thể, nó không phải là hình thức tốt nhất, nhưng nó có thể khắc phục vấn đề của bạn tạm thời.
Bạn có thể thêm một tệp JavaScript cho bạn chính .tpl.php
. Trong tệp này, bạn có thể chơi với các phần tử cha và con của mã (http://api.jquery.com/parent) bằng phương thức JavaScript. Vì vậy, trước tiên, bạn phải lấy phần tử của mình, bằng cách nào đó #idelement
(nó có thể được định vị trong mã menu giữa tất cả các lá của menu) và sau đó ẩn phần tử theo .hide()
. Ngoài ra, bạn phải thêm vào mã của mình rằng tệp JavaScript được thêm vào .tpl.php
chỉ khi người dùng đăng nhập. Giống như:
if(user_is_logged_in()){
drupal_add_js(yourjSFile);
}
Tôi nhắc lại đó là một giải pháp tạm thời.
Nếu bạn sửa đổi mã hoặc thành phần của bạn trong menu, giải pháp này cũng phải được sửa đổi.
Điều này sẽ chỉ ẩn một mục menu, và không phải các loại nội dung.
http://drupal.org/project/content_access hoạt động thực sự tốt với tôi với Drupal 7.22.
Nó thậm chí còn ẩn các liên kết menu chính trỏ đến nội dung bị hạn chế.