Як я можу визначити, чи поточна переглянута сторінка є адміністративною?


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 () поверне помилкові сторінки, такі як node / 123 / edit. Тим часом ця сторінка може або не може використовувати тему адміністратора. Будь-яка сторінка потенційно може використовувати тему адміністратора, а будь-яка сторінка може не використовувати тему адміністратора. Поточне визначення в ОП - "Адміністративна сторінка може бути розпізнана, коли активована тема адміністрування".
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.