Làm cách nào để phát hiện nếu trang được xem hiện tại là quản trị?


18

Làm cách nào để phát hiện xem người dùng trang hiện đang xem, có được coi là quản trị không? Một trang quản trị có thể được nhận ra khi chủ đề quản trị được kích hoạt.

Trong trường hợp của tôi, tôi muốn in một thông báo nếu điều kiện này được đáp ứng và nếu người dùng có thể 'quản trị các mô-đun'.

Câu trả lời:


30

Điều này có thể được thực hiện với path_is_admin(current_path()).

Ví dụ, việc thực hiện hook sau đây có thể được sử dụng.

function mymodule_init() {
  if (user_access('administer modules') && path_is_admin(current_path())) {
      drupal_set_message(t('Message'));
  }
}

1
Câu trả lời phụ thuộc vào định nghĩa "hành chính" của OP là gì và định nghĩa này có thể đã thay đổi kể từ khi câu hỏi được đăng lần đầu tiên. Một số người coi các trang chỉnh sửa nội dung là các trang "quản trị", tuy nhiên path_is_admin () sẽ trả về false cho một trang như nút / 123 / chỉnh sửa. Trong khi đó, trang này có thể hoặc không thể sử dụng chủ đề quản trị viên. Bất kỳ trang nào cũng có khả năng sử dụng chủ đề quản trị viên và bất kỳ trang nào cũng có thể không sử dụng chủ đề quản trị viên. Định nghĩa hiện tại trong OP là "Một trang quản trị có thể được nhận ra khi chủ đề quản trị được kích hoạt."
arnoldbird

9

Câu trả lời của Daniel là chính xác để xác định xem đường dẫn hiện tại có phải là "hành chính" hay không, nhưng nếu bạn muốn kiểm tra trực tiếp hơn nếu chủ đề quản trị đang được sử dụng (câu hỏi của bạn có vẻ hơi mơ hồ về việc bạn đang tìm kiếm), bạn có thể làm Giáo dục

global $theme;
if ($theme === variable_get('admin_theme', 'seven')) {
  // …
}

Mặc dù điều này có khả năng thất bại nếu bạn cố chạy nó quá sớm trong quá trình bootstrap, cụ thể là trước khi $themeđược xác định.


Làm rõ OP để nó không hướng vào việc tìm kiếm chủ đề quản trị viên. Thay vào đó, chủ đề quản trị chỉ đơn giản là một dấu hiệu của một đường dẫn hành chính.
Daniel

Tôi vẫn còn bối rối, cho đến khi tôi thấy rằng đây là một trong những điều mà bạn đăng câu hỏi và sau đó tự trả lời nó. Derp, tôi hiểu rồi
Garrett Albright

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.