¿Cómo puedo detectar si la página vista actual es administrativa?


18

¿Cómo detecto si el usuario que la página está viendo actualmente se considera administrativo? Se puede reconocer una página administrativa cuando se activa el tema de administración.

En mi caso, me gustaría imprimir un aviso si se cumple esta condición y si el usuario puede "administrar módulos".

Respuestas:


30

Esto se puede hacer con path_is_admin(current_path()).

Por ejemplo, se puede usar la siguiente implementación de enlace.

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

1
La respuesta depende de cuál sea la definición de OP de "administrativo", y esta definición puede haber cambiado desde que se publicó la pregunta por primera vez. Algunos consideran que las páginas de edición de contenido son páginas "administrativas", pero path_is_admin () devolverá false para una página como node / 123 / edit. Mientras tanto, esta página puede o no usar el tema de administrador. Cualquier página podría usar el tema de administrador, y cualquier página podría no usar el tema de administrador. La definición actual en el OP es "Se puede reconocer una página administrativa cuando se activa el tema de administración".
arnoldbird

9

La respuesta de Daniel es correcta para determinar si la ruta actual es "administrativa", pero si desea verificar más directamente si se está utilizando el tema de administración (su pregunta parece un poco vaga en cuanto a lo que está buscando), puede hacerlo ...

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

... aunque es probable que esto falle si intenta ejecutarlo demasiado pronto en el proceso de arranque, es decir, antes de que $themese defina.


OP clarificado, por lo que no está dirigido a buscar un tema de administrador. Más bien, el tema de administración es simplemente una indicación de una ruta administrativa.
Daniel

Todavía estaba confundido, hasta que vi que esta es una de esas cosas en las que publicaste una pregunta y luego la respondiste tú mismo. Derp, lo entiendo ahora.
Garrett Albright


0

Para verificar si se está utilizando el tema de administración (para Drupal 8) puede usar

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

para obtener el nombre del tema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.