Как я могу определить, является ли текущая просматриваемая страница административной?


18

Как определить, считается ли пользователь страницей, просматриваемой в данный момент, административным? Административная страница может быть распознана при активации темы администрирования.

В моем случае я хотел бы напечатать уведомление, если это условие выполнено, и если пользователь может «администрировать модули».

Ответы:


30

Это можно сделать с помощью path_is_admin(current_path()).

Например, может быть использована следующая реализация ловушек.

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

1
Ответ зависит от определения ОП «административного», и это определение, возможно, изменилось с тех пор, как вопрос был впервые опубликован. Некоторые считают, что страницы редактирования контента - это страницы администратора, но path_is_admin () вернет false для такой страницы, как node / 123 / edit. Между тем, эта страница может или не может использовать тему администратора. Любая страница может потенциально использовать тему администратора, а любая страница может не использовать тему администратора. Текущее определение в OP: «Административная страница может быть распознана при активации темы администрирования».
arnoldbird

9

Ответ Даниэля верен для определения того, является ли текущий путь «административным», но если вы хотите более непосредственно проверить, используется ли тема администрирования (ваш вопрос кажется немного расплывчатым относительно того, что вы ищете), вы можете сделать следующее: ...

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

… Хотя это, скорее всего, не удастся, если вы попытаетесь запустить его слишком рано в процессе начальной загрузки, а именно до $themeопределения.


Уточнено ОП, поэтому оно не направлено на поиск админской темы. Скорее администраторская тема является просто указанием административного пути.
Даниил

Я все еще был в замешательстве, пока не увидел, что это одна из тех вещей, где вы разместили вопрос, а затем ответили на него сами. Сумасшедший, я понял
Гаррет Олбрайт


0

Чтобы проверить, используется ли тема администрирования (для Drupal 8), вы можете использовать

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

чтобы получить название темы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.