Принудительно отображать страницу в теме администратора (режим наложения)

13

Есть ли способ заставить страницу отображаться в теме администратора, как страницы, путь которых начинается с 'admin /'?

ХПН
источник

Ответы:

4

Существует модуль Contribu ThemeKey, который

позволяет вам определять простые или сложные правила переключения тем, которые позволяют автоматически выбирать тему в зависимости от текущего пути, терминов таксономии, языка, типа узла и многих, многих других свойств. Он также может быть легко расширен для поддержки дополнительных свойств, предоставляемых другими модулями. В сочетании с наследованием тем Drupal и свойствами ThemeKey вы можете легко получить такие функции, как:

индивидуально оформленные каналы на передней / экранной заставке, выбранные дата / время, мобильные темы Рождества для различных автоматически обнаруживаемых мобильных устройств, специальные темы для «ограниченного» или «старого» содержимого браузеров, пользовательские темы или темы, связанные с ролями указание вашей среды (производство, подготовка, тестирование, песочница,…) безопасное тестирование вашего редизайна на живом сервере

Проверьте также связанный вопрос здесь .

Refineo
источник
14

Вы также можете сделать это, сделав собственный модуль.

Способ 1

Используйте это, если вы хотите создать тему для существующей страницы, основываясь на внутреннем пути Drupal (он же источник пути). В этом примере используется hook_custom_theme .

<?php
function MYMODULE_custom_theme() {
  // match node/1
  if (arg(0) == 'node' && arg(1) == '1') {
    return variable_get('admin_theme');
  }
}

Способ 2

Используйте это, если вы хотите, чтобы тема существующей страницы, на основе URL-пути (иначе псевдоним пути). В этом примере также используется hook_custom_theme .

<?php
function MYMODULE_custom_theme() {
  // get arguments
  $arg = explode('/', substr(request_uri(), strlen(base_path())));
  // match {wildcard}/path 
  // Using strpos as $arg[1] may end up having stuff like so ?order=title&sort=asc
  if (isset($arg[1]) && strpos($arg[1], 'path') !== false && !isset($arg[2])) {
    return variable_get('admin_theme');
  }
}

Способ 3

Используйте это, если вы хотите создать тему и создать страницу. Этот пример использует hook_menu . Чтобы узнать больше, взгляните на еще одну замечательную статью о hook_menu .

<?php
function MYMODULE_menu() {
  $items = array();

  // match some/path
  $output['some/path'] = array(
    'title' => t('Page Title'),
    'page callback' => 'MYMODULE_page',
    'theme callback' => 'variable_get',
    'theme arguments' => array('admin_theme'),
  )
}

function MYMODULE_page() {
  return 'Hello world.';
}
timofey.com
источник
7

Если вы являетесь разработчиком модуля, вы можете использовать hook_admin_paths, чтобы определить, какие пути должны отображаться в теме администрирования.

Даниил
источник
4

Просто дайте странице путь, начинающийся с admin: 'admin / mypage'

MediaFormat
источник
1
Почему отрицательный голос? Эта функциональность в ядре D7, вопрос не указывает, какую версию, но во время постеров вопрос D7 был выпущен.
MediaFormat
Да, совершенно разумный комментарий IMO.
Countzero
2
не похоже, что пользовательские страницы, начинающиеся с 'admin /', обязательно загружают тему администратора.
DrCord
идеально и просто для просмотра!
Патоши シ ト シ
Это не работает.
Кристия
1
  1. Эта функциональность теперь в ядре D7.

  2. Есть модуль, который эффективно предоставляет "hook_admin_paths" для пользовательского интерфейса: https://drupal.org/project/admin_theme

aaronbauman
источник