Görüntülenen sayfanın yönetimsel olup olmadığını nasıl tespit edebilirim?


18

Sayfanın görüntülemekte olduğu kullanıcının yönetici olarak kabul edilip edilmediğini nasıl tespit edebilirim? Yönetim teması etkinleştirildiğinde bir yönetim sayfası tanınabilir.

Benim durumumda, bu koşul gerçekleştiğinde ve kullanıcı 'modülleri yönetebiliyorsa' bir bildirim yazdırmak istiyorum.

Yanıtlar:


30

Bu ile yapılabilir path_is_admin(current_path()).

Örneğin, aşağıdaki kanca uygulaması kullanılabilir.

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

1
Cevap, OP'nin "idari" tanımının ne olduğuna bağlıdır ve bu tanım, sorunun ilk gönderilmesinden bu yana değişmiş olabilir. Bazıları içerik düzenleme sayfalarını "admin" sayfası olarak kabul eder, ancak path_is_admin () düğümü / 123 / edit gibi bir sayfa için false değerini döndürür. Bu arada, bu sayfa yönetici temasını kullanabilir veya kullanmayabilir. Herhangi bir sayfa potansiyel olarak yönetici temasını kullanabilir ve herhangi bir sayfa potansiyel olarak yönetici temasını kullanmayabilir. OP'deki geçerli tanım "Yönetim teması etkinleştirildiğinde bir yönetim sayfası tanınabilir" şeklindedir.
arnoldbird

9

Daniel'in cevabı, geçerli yolun "yönetimsel" olup olmadığını belirlemek için doğrudur, ancak yönetim temasının kullanılıp kullanılmadığını daha doğrudan kontrol etmek istiyorsanız (sorunuz aradığınız şey için biraz belirsiz görünüyor), ...

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

… Ancak bootstrap işleminde çok erken çalıştırmayı denerseniz bu muhtemelen başarısız olur, yani daha önce $themetanımlanır.


OP teması netleştirildi, böylece yönetici teması aramaya yönelik değil. Daha ziyade yönetici teması basitçe bir yönetim yolunun göstergesidir.
Daniel

Bunun bir soru gönderdiğin ve kendiniz cevapladığınız şeylerden biri olduğunu görene kadar hala kafam karışmıştı. Derp, şimdi anladım.
Garrett Albright


0

Yönetim temasının kullanılıp kullanılmadığını kontrol etmek için (Drupal 8 için) şunları kullanabilirsiniz:

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

tema adını almak için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.