Come posso rilevare se la pagina attualmente visualizzata è amministrativa?


18

Come posso rilevare se l'utente che la pagina sta visualizzando è considerato amministrativo? Una pagina amministrativa può essere riconosciuta quando il tema di amministrazione è attivato.

Nel mio caso, vorrei stampare un avviso se questa condizione è soddisfatta e se l'utente può "amministrare i moduli".

Risposte:


30

Questo può essere fatto con path_is_admin(current_path()).

Ad esempio, è possibile utilizzare la seguente implementazione di hook.

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

1
La risposta dipende dalla definizione "amministrativa" del PO e questa definizione potrebbe essere cambiata da quando la domanda è stata pubblicata per la prima volta. Alcuni considerano le pagine di modifica del contenuto come pagine "admin", ma path_is_admin () restituirà false per una pagina come node / 123 / edit. Nel frattempo, questa pagina può o meno utilizzare il tema dell'amministratore. Qualsiasi pagina potrebbe potenzialmente utilizzare il tema dell'amministratore e qualsiasi pagina potrebbe potenzialmente non utilizzare il tema dell'amministratore. La definizione corrente nel PO è "Una pagina amministrativa può essere riconosciuta quando il tema di amministrazione è attivato."
arnoldbird,

9

La risposta di Daniel è corretta per determinare se il percorso corrente è "amministrativo", ma se vuoi controllare più direttamente se il tema di amministrazione è in uso (la tua domanda sembra un po 'vaga su quale stai cercando), puoi fare ...

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

... anche se è probabile che ciò fallisca se si tenta di eseguirlo troppo presto nel processo di bootstrap, vale a dire prima che $themesia definito.


OP chiarito, quindi non è diretto alla ricerca di temi di amministrazione. Piuttosto il tema dell'amministratore è semplicemente un'indicazione di un percorso amministrativo.
Daniel,

Ero ancora confuso, fino a quando ho visto che questa è una di quelle cose in cui hai pubblicato una domanda e poi hai risposto tu stesso. Derp, ho capito adesso.
Garrett Albright,


0

Per verificare se viene utilizzato il tema di amministrazione (per Drupal 8) è possibile utilizzare

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

per ottenere il nome del tema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.