Submitted by drupal974 on
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.
Heuuu, c'est pas clair. Au
Permalien Soumis par haza le 25 Mai, 2010 - 21:53
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, ... ?
Oui, je vois que ce n'est pas
Permalien Soumis par drupal974 le 25 Mai, 2010 - 22:03
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
Un truc dans le genre, mais ça ne marche pas.
<?phpfunction
Permalien Soumis par haza le 25 Mai, 2010 - 22:14
<?php
function 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
<?php
if ($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 :)
Merci de cette réponse
Permalien Soumis par drupal974 le 25 Mai, 2010 - 22:39
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...
J'ai pas tout compris alors
Permalien Soumis par haza le 25 Mai, 2010 - 22:42
J'ai pas tout compris alors ....
arghh... Ca doit être la
Permalien Soumis par drupal974 le 25 Mai, 2010 - 22:53
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.
...
<?phpfunction
Permalien Soumis par haza le 25 Mai, 2010 - 23:01
<?php
function 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 ?
ca aurait pu, mais ça ne
Permalien Soumis par drupal974 le 25 Mai, 2010 - 23:19
ca aurait pu, mais ça ne fonctinone pas. Voici le code que j'ai dans le template.php pour cette fonction :
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 ?
non, le
Permalien Soumis par haza le 25 Mai, 2010 - 23:25
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.
Ok, ça fonctionne ! Merci
Permalien Soumis par drupal974 le 25 Mai, 2010 - 23:37
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.