web-dev-qa-db-fra.com

Comment puis-je détecter si la page actuellement consultée est administrative?

Comment puis-je détecter si l'utilisateur que la page consulte actuellement est considéré comme administratif? Une page administrative peut être reconnue lorsque le thème d'administration est activé.

Dans mon cas, je voudrais imprimer un avis si cette condition est remplie et si l'utilisateur peut "administrer les modules".

18
Daniel

Cela peut être fait avec path_is_admin(current_path()).

Par exemple, l'implémentation de hook suivante peut être utilisée.

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

La réponse de Daniel est correcte pour déterminer si le chemin actuel est "administratif", mais si vous voulez vérifier plus directement si le thème d'administration est utilisé (votre question semble un peu vague quant à ce que vous recherchez), vous pouvez le faire …

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

… Bien que cela risque d'échouer si vous essayez de l'exécuter trop tôt dans le processus bootstrap, à savoir avant $theme est défini.

9
Garrett Albright

Pour ceux qui recherchent la méthode Drupal 8:

if (\Drupal::service('router.admin_context')->isAdminRoute()) {
  // …
}

(Testé avec une fonction de prétraitement en 8.7.5 et tilisé dans un core-patch en 8.0)

2
William Turrell

Pour vérifier si le thème d'administration est utilisé (pour Drupal 8), vous pouvez utiliser

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

pour obtenir le nom du thème.

0
kbrinner