Bagaimana saya bisa mendeteksi jika halaman yang dilihat saat ini adalah administratif?


18

Bagaimana saya mendeteksi apakah pengguna halaman saat ini dilihat, dianggap administratif? Halaman administratif dapat dikenali ketika tema administrasi diaktifkan.

Dalam kasus saya, saya ingin mencetak pemberitahuan jika kondisi ini terpenuhi, dan jika pengguna dapat 'mengelola modul'.

Jawaban:


30

Ini bisa dilakukan dengan path_is_admin(current_path()).

Misalnya, implementasi pengait berikut dapat digunakan.

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

1
Jawabannya tergantung pada definisi OP tentang "administratif", dan definisi ini mungkin telah berubah sejak pertanyaan pertama kali diposting. Beberapa menganggap halaman pengeditan konten sebagai halaman "admin", namun path_is_admin () akan mengembalikan false untuk halaman seperti node / 123 / edit. Sementara itu, halaman ini mungkin atau mungkin tidak menggunakan tema admin. Halaman mana pun berpotensi menggunakan tema admin, dan halaman mana pun berpotensi tidak menggunakan tema admin. Definisi saat ini dalam OP adalah "Halaman administratif dapat dikenali ketika tema administrasi diaktifkan."
arnoldbird

9

Jawaban Daniel benar untuk menentukan apakah jalur saat ini adalah "administratif," tetapi jika Anda ingin lebih langsung memeriksa apakah tema administrasi sedang digunakan (pertanyaan Anda tampaknya agak kabur tentang yang Anda cari), Anda dapat melakukan ...

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

… Walaupun ini kemungkinan gagal jika Anda mencoba menjalankannya terlalu dini dalam proses bootstrap, yaitu sebelum $themedidefinisikan.


OP yang diklarifikasi sehingga tidak diarahkan untuk mencari tema admin. Sebaliknya tema admin hanyalah indikasi jalur administratif.
Daniel

Saya masih bingung, sampai saya melihat bahwa ini adalah salah satu hal di mana Anda mengirim pertanyaan dan kemudian menjawabnya sendiri. Derp, saya mengerti sekarang.
Garrett Albright


0

Untuk memeriksa apakah tema administrasi sedang digunakan (untuk Drupal 8) Anda dapat menggunakan

$theme_name = \Drupal::service('theme.manager')->getActiveTheme()->getName();

untuk mendapatkan nama tema.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.