Відповіді:
Є модуль Contrib ThemeKey що
дозволяє визначати прості або складні правила перемикання тем, які дозволяють автоматичний вибір теми залежно від поточного шляху, термінів таксономії, мови, типу вузла та багатьох, багатьох інших властивостей. Його також можна легко розширити, щоб підтримувати додаткові властивості, що піддаються іншим модулям. У поєднанні з успадкуванням теми Drupal та властивостями ThemeKey ви можете легко досягти таких функцій, як:
індивідуально-стильові канали на головній сторінці / "сплеску", на екрані дату / час, вибрану різдвяну тему для мобільних тем для різних автоматично виявлених мобільних пристроїв, спеціальні теми для "обмеженого" або "старого" вмісту веб-переглядачів, користувачів або рольових тем вказуючи на те, що ваше середовище (виробництво, постановка, тестування, пісочниця,…) тестує своє перепроектування на безпечному сервері
Перевірте також пов'язане питання тут .
Ви також можете зробити це, зробивши спеціальний модуль.
Спосіб 1
Використовуйте це, якщо ви хочете тематизувати існуючу сторінку на основі внутрішнього шляху Drupal (також джерела шляху). У цьому прикладі використовується гак_custom_theme .
<?php
function MYMODULE_custom_theme() {
// match node/1
if (arg(0) == 'node' && arg(1) == '1') {
return variable_get('admin_theme');
}
}
Спосіб 2
Використовуйте це, якщо ви хочете тематизувати існуючу сторінку на основі шляху URL-адреси (псевдонім шляху). У цьому прикладі також використовується гак_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
Використовуйте це, якщо ви хочете тематизувати та створити сторінку. У цьому прикладі використовується гак_меню . Щоб дізнатися більше, погляньте на ще одну чудову статтю на гачку_меню .
<?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.';
}
Якщо ви розробник модуля, ви можете використовувати гачку_admin_paths, щоб визначити, які шляхи потрібно відобразити з темою адміністрування.
Просто дайте сторінці шлях, починаючи з адміністратора: 'admin / mypage'
Ця функціональність тепер є в ядрі D7.
Існує модуль, який ефективно виставляє в інтерфейс інтерфейс "гак_admin_paths": https://drupal.org/project/admin_theme