Submitted by OwilliwO on
Bonsoir,
je bosse actuellement avec Drupal 6 sur un site type portail d'information avec plusieurs types de contenus.
Pour faire bref, j'ai des articles classiques (nom machine => story) et des brèves (nom machine => breve)
Je sais qu'on peut templater un noeud en fonction de son type en créant le fichier node-breve.tpl.php
Mais cela me permet de "tuner" seulement l'affichage de mon contenu (le contenu de la variable $content qu'on appelle dans page.tpl.php)
Je voudrais aller plus loin et surcharger le template page.tpl.php en fonction de mon type de contenu pour pouvoir notamment appeler la variable content dans un endroit différent par rapport au template de base. Cela me donnerait un fichier page-breve.tpl.php
Est ce que ça marche ?
J'ai lu des trucs à propos de fonctions preprocess dans le fichier template.php, mais j'avoue que je n'ose pas trop toucher ce fichier ? Y-a-t-il moyen de faire sans ?
Bonsoir, Il vous suffit
Permalien Soumis par takeova le 18 Février, 2010 - 18:31
Bonsoir,
Il vous suffit d'ajouter à votre fichier template.php :
function phptemplate_preprocess_page(&$vars) {
if (arg(0) == 'node') {
$vars['template_files'][] = 'page-' . $vars['node']->type;
}
}
Ce qui vous donnera au final pour un node de type story la possibilité de créer un fichier page-story.tpl.php
C'est nickel !! Je viens de
Permalien Soumis par OwilliwO le 19 Février, 2010 - 09:46
C'est nickel !! Je viens de tester, ça marche parfaitement bien.
Merci beaucoup !!
Bonsoir, Et pour Drupal 7
Permalien Soumis par slown le 3 Mai, 2011 - 18:58
Bonsoir,
Et pour Drupal 7 c'est la même chose ?
Merci.
Presque $vars['theme_hook_sug
Permalien Soumis par kustolovic le 4 Mai, 2011 - 10:18
Presque
$vars['theme_hook_suggestions'][] = ...
Salut à toi, merci pour ta
Permalien Soumis par slown le 4 Mai, 2011 - 10:37
Salut à toi, merci pour ta réponse. De mon côté j'ai écris cela dans mon template.php
if (arg(0) == 'node') {
$vars['theme_hook_suggestions'][] = 'page-' . $vars['node']->type;
}
Cela ne fonctionne pas même après avoir vidé mon cache.
Mon objectif étant d'appliquer un style de page.tpl.php pour mon type de contenu "galerie" de façon à ce que j'obtienne :
"page--galerie.tpl.php" pour le moment cela fonctionne en mettant l'ID de mon noeud "page--node--17.tpl.php mais cela n'est pas dynamique.
Merci pour votre aide précieuse.
Est-ce que tu utilises bien
Permalien Soumis par vincent59 le 4 Mai, 2011 - 11:28
Est-ce que tu utilises bien un double '_' (underscore):
if (arg(0) == ‘node’) {
$vars[‘theme_hook_suggestions’][] = ‘page__’ . $vars[‘node’]->type ;
}
par contre, ton template doit bien être de la forme page--galerie.tpl.php (avec un '-' moins et pas un underscore...)
Bonjour, Quelqu'un peut-il
Permalien Soumis par webzac le 18 Mai, 2010 - 11:14
Bonjour,
Quelqu'un peut-il m'aider ? car moi je suis contraint de bosser sur Dupal 5 et je ne trouve pas le moyen de résoudre le problème posé dans cette version.
Merci
Dsl, perso j'ai commencé avec
Permalien Soumis par OwilliwO le 18 Mai, 2010 - 12:27
Dsl, perso j'ai commencé avec le 6...
Voir dans la doc anglaise :
Permalien Soumis par vincent59 le 18 Mai, 2010 - 15:16
Voir dans la doc anglaise : http://drupal.org/node/104316 "Using different page templates depending on the current path"
Bon après moult recherches
Permalien Soumis par slown le 4 Mai, 2011 - 11:36
Bon après moult recherches j'ai réussi à faire ce que je voulais, c'est à dire avoir un template de page pour mon type de contenu "galerie" pour Drupal 7. En fait il suffit d'écrire ceci dans le fichier template.php
function nomdevotretheme_preprocess_page(&$vars) {
if (isset($vars['node'])) {
if ($vars['node']->type != '') {
$vars['theme_hook_suggestions'][] = 'page__node__' . $vars['node']->type;
}
}
}
Ce qui vous permettra d'avoir un tpl personnalisé par type de contenu : "page--node--galerie.tpl.php", "page--node--typedecontenu.tpl.php". Comme le précise Vincent59 n'oubliez pas les double tirets pour Drupal 7 ;-)
Surtout pensez bien à vider le cache Drupal une fois votre template.php modifié.
Merci à kustolovic et vincent59 ainsi qu'à la communauté Drupal FR !!
/**
Permalien Soumis par bilel.meb le 24 Janvier, 2019 - 12:22
/**
* Override or insert variables into the page template.
*/
function TONTHEME_preprocess_page(&$variables) {
if (isset($variables['node']->type)) {
// If the content type's machine name is "my_machine_name" the file
// name will be "page--my-machine-name.tpl.php".
$variables['theme_hook_suggestions'][] = 'page__' . $variables['node']->type;
}