Réponses:
Il y a un module contrib ThemeKey qui
vous permet de définir des règles de changement de thème simples ou sophistiquées qui permettent la sélection automatique d'un thème en fonction du chemin d'accès actuel, des termes de taxonomie, de la langue, du type de nœud et de nombreuses autres propriétés. Il peut également être facilement étendu pour prendre en charge des propriétés supplémentaires exposées par d'autres modules. En combinaison avec l'héritage de thème et les propriétés ThemeKey de Drupal, vous pouvez facilement obtenir des fonctionnalités telles que:
canaux de style individuel un écran de première page / "splash" un thème de Noël sélectionné par date / heure thèmes mobiles pour différents appareils mobiles auto-détectés thèmes spéciaux pour les navigateurs "limités" ou "anciens" contenu, utilisateur ou thèmes spécifiques au rôle indiquant votre environnement (production, staging, test, sandbox,…) test de votre refonte en toute sécurité sur un serveur live
Vérifiez également la question connexe ici .
Vous pouvez également le faire en créant un module personnalisé.
Méthode 1
Utilisez-le si vous souhaitez créer un thème pour une page existante, en fonction du chemin interne de Drupal (alias source du chemin). Cet exemple utilise hook_custom_theme .
<?php
function MYMODULE_custom_theme() {
// match node/1
if (arg(0) == 'node' && arg(1) == '1') {
return variable_get('admin_theme');
}
}
Méthode 2
Utilisez-le si vous souhaitez créer un thème pour une page existante, en fonction du chemin de l'URL (alias du chemin). Cet exemple utilise également 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');
}
}
Méthode 3
Utilisez-le si vous souhaitez créer un thème et créer une page. Cet exemple utilise hook_menu . Pour en savoir plus, consultez un autre excellent article sur 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.';
}
Si vous êtes un développeur de modules, vous pouvez utiliser hook_admin_paths pour définir les chemins à rendre avec le thème d'administration.
Donnez simplement à la page un chemin commençant par admin: 'admin / mypage'
Cette fonctionnalité est maintenant dans le noyau D7.
Il y a un module qui expose efficacement "hook_admin_paths" à l'interface utilisateur: https://drupal.org/project/admin_theme