Utiliser une mise en page (template + css) différente pour l'admin et le reste du site

IMPORTANT : Ce tutoriel n'a plus lieu d'être à partir de Drupal 5, qui permet nativement de choisir un thème différent pour l'admin et le reste du site.

Il arrive fréquemment que l'on veuille utiliser un design différent pour l'interface d'administration et la partie publique d'un site Drupal. La plupart du temps, on garde le design Drupal par défaut pour l'admin et on met en place un design personnalisé pour la partie publique.

Le design d'un site Drupal est essentiellement implémenté par 2 fichiers que l'on trouve dans le répertoire du thème en cours :

  • page.tpl.php
  • style.css

Nous allons commencer par créer 2 nouveaux fichiers que nous appellerons :

  • page-admin.tpl.php
  • style-admin.css

Pour créer ces fichiers, il suffit de copier les fichiers originaux et de les renommer (les nouveaux fichiers se trouvent donc au même endroit que les originaux, dans le répertoire du thème en cours).

Vous l'aurez compris, nous utiliserons les fichiers originaux pour implémenter le design de la partie publique du site, et les fichiers "-admin" pour... la partie admin !

Il faut maintenant dire à Drupal d'utiliser les fichiers "-admin" à la place des originaux lorsqu'on se trouve dans l'admin.

Utiliser page-admin.tpl.php au lieu de page.tpl.php quand on est dans l'admin

La pratique habituelle est d'insérer le code suivant dans template.php :
<?php
function _phptemplate_variables($hook, $vars) {
switch($hook) {
case 'page' :
if (arg(0) == 'admin') {
$vars['template_file'] = 'page-admin';
}
break;
}
return $vars;
}
?>

Ce code indique à Drupal d'utiliser page-admin.tpl.php au lieu de page.tpl.php quand on est dans l'admin.

Remarque : template.php est un fichier PHP spécial qui permet d'apporter des personnalisations avancées au thème (design) d'un site Drupal. Comme ce fichier n'existe pas par défaut, il faut le créer si vous en avez besoin. Pour cela, utilisez votre éditeur habituel et copiez le fichier dans le répertoire du thème en cours. Si ce fichier existe déjà, il vous suffit d'y ajouter le code ci-dessus.

Nous avons donc maintenant un template différent pour l'admin et le reste du site. Il faut encore s'occuper de la feuille de styles CSS.

Utiliser style-admin.css au lieu de style.css quand on est dans l'admin

Là encore, on ajoute une fonction dans template.php :
<?php
function phptemplate_stylesheet_import($path, $media = 'all') {
if ($path == '/'. path_to_theme() .'/style.css') {
if (arg(0) == 'admin') {
return theme_stylesheet_import('/'. path_to_theme() .'/style-admin.css', $media);
}
}
return theme_stylesheet_import($path, $media);
}
?>

Ce code indique à Drupal d'utiliser style-admin.css au lieu de style.css quand on est dans l'admin.

Voilà ! Vous ne verrez aucune différence tant que vous n'aurez pas personnalisé les fichiers. En général, on ne touche pas aux fichiers page-admin.tpl.php et style-admin.css, et on personnalise page.tpl.php et style.css.

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement.
Syndiquer le contenu