Liên kết ẩn từ người dùng ẩn danh


7

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?


Nếu trang đó không hiển thị cho người dùng ẩn danh thì liên kết sẽ tự động bị xóa.
j2r

Và làm cách nào tôi có thể định cấu hình người xem trang?
Walker

1
Phiên bản này của Drupal là gì?
Cravecode

Chính xác là tôi đang sử dụng Drupal 7. Phiên bản 7.14.
Walker

Câu trả lời:


5

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 .


Đó là bản chất của vấn đề. Tôi cần một số trang hiển thị cho người dùng ẩn danh, vì vậy tôi không thể chặn chúng theo loại nội dung. Không có cách nào để định cấu hình khối menu để nó chỉ hiển thị một số liên kết nhất định đến những người đã đăng nhập?
Walker

Cập nhật câu trả lời của tôi với một liên kết đến một mô-đun sẽ có thể giúp bạn ra ngoài.
Lester Peabody

@Lester Tôi không nghĩ rằng điều này cho phép kiểm soát truy cập ở cấp nút, tôi có thể sai nhưng có vẻ như người ta sẽ cần tạo một loại nội dung cụ thể cho các nút cần kiểm soát truy cập. Nhưng điều này đã được tích hợp sẵn trong Drupal, vì vậy tôi hơi bối rối không biết mô-đun này làm gì? Tôi sẽ phải thử điều này. Cảm ơn đã chia sẻ bro.
stefgosselin

Nếu bạn nhấp vào hình thu nhỏ cho dự án, sẽ có mục "cài đặt truy cập nút nội dung" mà bạn có thể kiểm tra. Có vẻ như nó thêm một tab khác bên cạnh 'Xem', như 'Quyền' hoặc một cái gì đó tương tự nơi bạn có thể định cấu hình perms chỉ cho nút đó. Nhưng vâng, tôi cũng cần phải thử nó trước khi tôi thực sự có thể xác nhận nó.
Lester Peabody

Ốm, tôi sẽ phải nhét cái này vào cái túi nhỏ của tôi để đi về phía trước.
Lester Peabody

5

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 callbacktrong đó 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!


3

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.


Nó có ẩn liên kết menu hay nó cũng hạn chế quyền truy cập vào trang mà nó trỏ đến?
Lester Peabody

@LesterPeabody Nó ẩn liên kết menu. Và ẩn liên kết menu cũng tốt như giữ người dùng truy cập trang đó. Tôi không chắc người dùng có thể đoán URL để truy cập trang không ;-)
AjitS

Tôi chỉ có vấn đề nghiêm trọng với quan điểm bảo mật. Tôi không hiểu lợi ích của việc chỉ ẩn một liên kết khi họ vẫn có thể truy cập trang mà nó trỏ đến, chỉ không có ý nghĩa gì với tôi.
Lester Peabody

1
Ẩn một mục menu mà không hạn chế quyền truy cập có các trường hợp sử dụng hợp pháp, tuy nhiên việc ẩn không thể thay thế cho việc hạn chế nếu bạn cần nội dung bị hạn chế. Điều đó thật xấu. Không chỉ người dùng đoán URL (mà nhân tiện cũng là một việc dễ làm), đó cũng là công cụ tìm kiếm lập chỉ mục các trang của bạn nếu chúng không bị hạn chế. Nếu nội dung của bạn nhạy cảm thì điều này rất quan trọng. - Điều đó nói rằng, câu hỏi không bao giờ nói rằng quyền truy cập nội dung bị hạn chế.
rooby

2

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.phpchỉ 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.


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.