Catégories:
Bonjour à tous, ou bonsoir,
J’ai 3 types de contenus utilisant le même node.tpl.php. Plutôt que dupliquer 3 fois le fichier node.tpl.php par type de contenu, je souhaiterai le faire dans le template.php, mais je ne trouve pas comment assigner un type de contenu à un .tpl.php.
C’est possible ?
Merci d’avance et à bientôt.
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Heuuu, c’est pas clair.
Au final, tu veux quoi ? un seul fichier node.tpl.php mais un comportement un peu different definie dans template.php
ou
plusieur fichier node.tpl.php, genre node-type1.tpl.php, node-type2.tpl.php, … ?
Haza.fr
Drupal, sans fondements
Haza
1590
Oui, je vois que ce n’est pas clair.
En fait, j’ai 3 types de contenus nommé : ‘annuaire_club’, ‘annuaire_coach’, ‘annuaire_boutique’. Pour surcharger le fichier node.tpl.php j’ai du écrire :
Ce qui me dérange, c’est que dans ces trois .tpl.php, on retrouve le même code. J’aurai voulu indiquer dans le template.php un truc dans le genre
<?phpswitch ($content_type) {
...
case 'annuaire_club' :
case 'annuaire_coach' :
case 'annuaire_boutique' : theme('annuaire.tpl.php'); // le fichier générique
}
?>
Un truc dans le genre, mais ça ne marche pas.
drupal974
404
<?phpfunction phptemplate_preprocess_node(&$vars, $hook) {
$node = $vars['node'];
if ($node->type == "content_type1") {
$vars['MaVarSpecifique'] = "content type 1";
}
if ($node->type == "content_type2") {
$vars['MaVarSpecifique'] = "content type 2";
}
} ?>
Puis dans le node.tpl.php
<?phpif ($MaVarSpecifique) {
print $MaVarSpecifique;
}
?>
C’est le cas où ta VarSpeficique se place au meme endroit, mais avec diverses valeurs.
Rien ne t’empeche de jouer avec MaVar1, MaVar2, … et de vérifier ensuite dans le node.tpl.php si la var existe.
Comme ca, un seul node.tpl.php, mais avec du contenu (des variables) differentes en fonction du content type.
ca doit marcher :)
Haza.fr
Drupal, sans fondements
Haza
1590
Merci de cette réponse rapide, mais le petit hic est que j’ai une 10zaine de type de contenu, du coup, je ne peux pas utiliser le node.tpl.php, il faut que j’utilise un autre type, d’ou l’idée d’avoir un annuaire.tpl.php…
J’ai pourtant déjà vu ça qq part, mais je n’arrive plus à mettre la main dessus…
drupal974
404
J’ai pas tout compris alors ….
Haza.fr
Drupal, sans fondements
Haza
1590
arghh… Ca doit être la fatigue, j’ai passé plus de 8h sur un bug aujourd’hui, et il est déjà presque 1h chez moi.
En fait, je souhaiterai assigner dans le fichier template.php (par des preprocess_) des types de contenus à des fichier de type nimporteQuelNomIci.tpl.php plutot que d’avoir le cas standard node-typcontenu.tpl.php.
…
drupal974
404
<?phpfunction phptemplate_preprocess_node(&$vars, $hook) {
$node = $vars['node'];
if ($node->type == "content_type1") {
$vars['template_files'][] = "content-type-1";
}
if ($node->type == "content_type2") {
$vars['template_files'][] = "content-type-2";
}
} ?>
Et la tu peux utiliser content-type-1.tpl.php et content-type-2.tpl.php
c’est ca ?
Haza.fr
Drupal, sans fondements
Haza
1590
ca aurait pu, mais ça ne fonctinone pas. Voici le code que j’ai dans le template.php pour cette fonction :
<?php$node
= $vars['node'];if ($node->type == "annuaire_coach") {
$vars['annuaire.tpl.php'][] = "annuaire_coach";
}
?>
Donc, ‘annuaire_coach’ est bien mon type de contenu actuel, et je voudrais (pour l’exemple) que ce soit le fichier de template annuaire.tpl.php qui soit utilisé
Mais ca ne fonctionne pas… j’ai bien compris ?
drupal974
404
non, le $vars[‘template_files’][], il ne faut pas toucher. il faut le garder tel quel.
(template_files est un tableau contenant la liste des fichiers potentiellement utilisable pour le theme, tu peux faire un print_r($vars[‘template_files’]) pour voir, c’est toujours interressant de savoir ce qu’il y a dedans).
Donc ton code, donnerais :
if ($node->type == "annuaire_coach") {$vars['template_files'][] = "annuaire"; // sans le .tpl.php
}
Penser à faire un clear cache des qu’on touche a ça, ces trucs là sont mis assez fortement en cache.
Haza.fr
Drupal, sans fondements
Haza
1590
Ok, ça fonctionne ! Merci beaucoup Haza. Là tu m’as bien aidé, ça fonctionne, il est 1h30, demain la journée sera dur alors je vais dormir.
Si je peux faire qq chose pour te remercier, n’hésite pas… Je me demande comment vous faites pour connaitre tout ça ! En tout cas, encore merci, mon code ne sera que plus propre !
Bonne soirée, W.
drupal974
404