Quand on commence à s'amuser avec Drupal, on se pose rapidement des petites questions sur la manière dont on va s'y prendre pour se faire son petit thème préféré.
Jusque là, normalement, rien de trop dur. Mais si on commence a vouloir avoir des mises en pages différente en fonction de l'endroit où l'on se trouve, les choses peuvent se compliquer quelque peu.
Décomposition des urls
Dans un premier temps, le moteur de template de Drupal (PhpTemplate) décompose automatiquement les urls pour en extraire "le lieu" où l'on se trouve.
Ainsi, l'adresse http://example.com/?q=
Grâce à ceci, il devient possible de créer des fichiers page.tpl.php un peu personnalisé.
Ainsi, un fichier
- page-node-edit.tpl.php sera le fichier utilisé pour toutes les pages d'édition
- page-node-1.tpl.php sera le fichier utilisé pour le node 1, et uniquement celui-ci
- page-node.tpl.php sera le fichier utilisé pour les nodes
- page.tpl.php sera le fichier utilisé si aucun autre fichier n'est présent
A rajouter, la possibilité d'avoir un fichier nommé page-front.tpl.php qui sera utilisé pour la première page du site.
Un template pour un noeud particulier
Si l'on souhaite utiliser un node.tpl.php spécifique pour un node bien particulier, il faut rajouter le code suivant le template.php
template.php
On peut maintenant créer un fichier node-21.tpl.php qui sera appliqué uniquement pour le node 21.
Un thème en fonction du type de noeud
Une solution pour gérer facilement ses mises en page est également d'utiliser les types de contenus de Drupal. Avoir une mise en page différentes pour les "story", les "page" ou les billets de blog, ce n'est pas si compliqué que ça.
Commençons par créer un fichier nommé page-default.tpl.php, et copions le contenu de page.tpl.php dans ce nouveau fichier.
Maintenant, on va pouvoir attaquer en tranquillité le fichier page.tpl.php
page.tpl.php
/**
* Ce snippet charge differentes page?type.tpl.php
* automatiquement en fonction du type du node
*/
if ($is_front) {
include 'page->front.tpl.php';
return; }
if ($node->type == 'book') {
include 'page-book.tpl.php';
return; }
if ($node->type == 'image') {
include 'page-image.tpl.php';
return; }
if ($node->type == 'forum') {
include 'page-forum.tpl.php';
return; }
// Si aucun ne correspond, on fini sur la page par default
include 'page-default.tpl.php';
return;
?>
Comme on peut le voir, ce fichier sera appellé des qu'on arrive sur une page du site (presque tout le temps donc), et il tout simplement inclure les fichiers adequat en fonction du type de noeud que l'on va trouver sur la page.
Il ne reste donc plus qu'a créer les fichiers page-forum.tpl.php, page-book.tpl.php et autres si nécessaire.
Si on est en présence d'un type non listé, il va inclure le fichier par défaut, à savoir page-default.tpl.php
25 June, 2008 - 16:42
Pour ce tutorial très bien expliqué
- répondre
»Poster un nouveau commentaire