Ответы:
Существует модуль Contribu ThemeKey, который
позволяет вам определять простые или сложные правила переключения тем, которые позволяют автоматически выбирать тему в зависимости от текущего пути, терминов таксономии, языка, типа узла и многих, многих других свойств. Он также может быть легко расширен для поддержки дополнительных свойств, предоставляемых другими модулями. В сочетании с наследованием тем Drupal и свойствами ThemeKey вы можете легко получить такие функции, как:
индивидуально оформленные каналы на передней / экранной заставке, выбранные дата / время, мобильные темы Рождества для различных автоматически обнаруживаемых мобильных устройств, специальные темы для «ограниченного» или «старого» содержимого браузеров, пользовательские темы или темы, связанные с ролями указание вашей среды (производство, подготовка, тестирование, песочница,…) безопасное тестирование вашего редизайна на живом сервере
Проверьте также связанный вопрос здесь .
Вы также можете сделать это, сделав собственный модуль.
Способ 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.';
}
Если вы являетесь разработчиком модуля, вы можете использовать hook_admin_paths, чтобы определить, какие пути должны отображаться в теме администрирования.
Просто дайте странице путь, начинающийся с admin: 'admin / mypage'
Эта функциональность теперь в ядре D7.
Есть модуль, который эффективно предоставляет "hook_admin_paths" для пользовательского интерфейса: https://drupal.org/project/admin_theme