Como posso detectar se a página visualizada atualmente é administrativa?


18

Como detecto se o usuário que a página está visualizando no momento é considerado administrativo? Uma página administrativa pode ser reconhecida quando o tema de administração é ativado.

No meu caso, eu gostaria de imprimir um aviso se essa condição for atendida e se o usuário puder 'administrar módulos'.

Respostas:


30

Isso pode ser feito com path_is_admin(current_path()).

Por exemplo, a seguinte implementação de gancho pode ser usada.

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

11
A resposta depende de qual é a definição de "administrativo" do OP e essa definição pode ter sido alterada desde que a pergunta foi publicada pela primeira vez. Alguns consideram as páginas de edição de conteúdo como "admin", mas path_is_admin () retornará false para uma página como node / 123 / edit. Enquanto isso, esta página pode ou não usar o tema administrador. Qualquer página pode potencialmente usar o tema de administrador e qualquer página pode não usar o tema de administrador. A definição atual no OP é "Uma página administrativa pode ser reconhecida quando o tema de administração é ativado".
precisa saber é o seguinte

9

A resposta de Daniel está correta para determinar se o caminho atual é "administrativo", mas se você quiser verificar mais diretamente se o tema de administração está sendo usado (sua pergunta parece um pouco vaga quanto ao que você está procurando), você pode ...

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

... embora seja provável que isso falhe se você tentar executá-lo muito cedo no processo de inicialização, ou seja, antes da $themedefinição.


OP esclarecido para que não seja direcionado à procura do tema de administrador. Em vez disso, o tema admin é simplesmente uma indicação de um caminho administrativo.
Daniel

Eu ainda estava confuso, até ver que essa é uma daquelas coisas em que você postou uma pergunta e depois a respondeu. Derp, entendi agora.
Garrett Albright


0

Para verificar se o tema de administração está sendo usado (no Drupal 8), você pode usar

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

para obter o nome do tema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.