Theming : template commun à 95%

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

bonjour,

j'ai un nouveau site à faire et j'ai un type de contenu custom qui va afficher des fiches formations.Celles ci sont réparties en 3 poles, et j'ai fais un code visuel pour els repérer dans l'angle supérieur G) au dessus du H1, ce qui va me permettre d'utiliser en css une id et d'appliquer mon design en fond de bloc H.

Le template est commun mais en terme de design cette partie va changer selon l'appartenance à un pole ou à un autre.J'ai déja dans l'idée d'utiliser les relationship dans vue pour indiquer à Drupal à quel pole cela se référe.L'ideal est d'avoir une variable qui fait que drupal sais quel id appliquer au H1 et donc changer le fond et le code visuel selon la fiche et son pole.

Quelle est la meilleure maniere de faire module, code..) ? sans devoir faire plusieurs types de contenus juste distingués par ce détail ? je joins un morceau du design

merci

Fichier attachéTaille
Icône image detail-page.jpg10.14 Ko
Forum : 
Version de Drupal : 
Tags : 

Si tu as une variable qui peut t'aider, je suggère un preprocess_page dans le template.php du thème. tu pourrais par exemple modifier la classe "body" (body_classes)

il y a des exemples dans le template.php de garland

ok je vais jeter un oeil a garland pour voir comment il fait...jai aussi trouvé ça qui doit rejoindre ce que tu me dit : http://drupal.org/node/723544 , voici le code utiliser pour que la taxonomie soit la variable et changer le node.tpl en fonction de celle -ci :

<?php
function MYTHEME_preprocess_node(&$variables) {
 
$node = $variables['node'];
  if(
$node->type == 'page') {
   
// Check if custom layout defined in taxonomy
   
if(!empty($node->taxonomy) && $node->taxonomy[1]->vid == 1) {
     
$variables['template_files'][] = 'node-page-' . $node->taxonomy[1]->name;
    }
  }
}
?>

EDIT : dans garland j'ai trouvé cela

<?php
/**
 * Override or insert PHPTemplate variables into the templates.
 */
function phptemplate_preprocess_page(&$vars) {
 
$vars['tabs2'] = menu_secondary_local_tasks();

 
// Hook into color.module
 
if (module_exists('color')) {
   
_color_page_alter($vars);
  }
}
?>

mais si c'est le bon code, comment le modifier ?

Autre question liée, c'est l'organisation au niveau de CCK, il va falloir que je créer des champs qui seront ensuite distribués dans les différentes zones via le node.tpl; ainsi j'ai besoin :

  • d'un champ avec un lien interne et un texte auquel appliquer le lien
  • de la même chose mais avec un lien externe
  • d'un champ d'upload de pdf ( ça je sais faire avec filefield)

donc ma question c'est quel type de champ choisir dans CCK pour mettre mes liens ? avec un champ description comme pour filefield

merci

je suis en train de faire un test, j'ai créé une taxo, et créé un fichier node-page-pole-tertaire.tpl.php ; j'ai aussi un page-fiche_formation.tpl.php ; et alors que j'avais mis le node.tpl dans un dossier /node , puis remis à la racine , il semble que le page.tpl surpasse le node.tpl, ce qui est étrange non ? j'ai vidé le cache et le registre de theme plusieurs fois...

le chemin fonctionne dans /node, si je créer un node-CONTENT_TYPE.tpl ça marche donc le souci est au niveau de la valeur du terme récupérée qui doit être différente de celle que j'utilise pour nommer mon node.tpl ; actuellement c'est node-pole-tertiaire.tpl; mais ce n'est pas le bon nommage ....

le souci vient donc de la fonction dans template.php, voila je l'ai trifouillé mais sans succés n'étant pas trop bon en php:

<?php
/*Permet d'attribuer un template de node différent selon terme de taxo et type de contenu
 * - NE PAS OUBLIER DE CHANGER LE NOM DU THEME !!!___
 */
function cyrano_ce_preprocess_node(&$variables) {
 
$node = $variables['node'];
  foreach(
$variables['node']->taxonomy as $term ) {
    
$i++;
     
$variables['terme'][$i] = $term->name;
    }
  if(
$node->type == 'page_fiche_formation') {
   
// Check if custom layout defined in taxonomy
   
if(!empty($node->taxonomy) && $node->taxonomy[1]->vid == 1) {

     
$variables['template_files'][] = 'node-' . $term->name;
     
    }
   
//echo ('$node->taxonomy[1]->name;');
 
}
}
?>

nouvelle tentative, le but étant au final de pouvoir avoir un node.tpl appliqué selon le type de contenu ET le terme de taxonomie...et je ne suis pas assez bon en php manifestement :

<?php
/*Permet d'attribuer un template de node différent selon terme de taxo et type de contenu
 * - NE PAS OUBLIER DE CHANGER LE NOM DU THEME !!!___
 */
function cyrano_ce_preprocess_node(&$variables) {
 
$node = $variables['node'];
   if(
$node->type == 'page_fiche_formation') {
   
// Check if custom layout defined in taxonomy
   
if(!empty($node->taxonomy) && $node->taxonomy[1]->vid == 1) {
         foreach (
$variables['node']->taxonomy as $term) {
     
$variables['template_files'][] = 'node-' . $term->name;
         }
    }
  
  }
}
?>

PS: si un admin peut changer mon titre en " Theming : node.tpl en fonction du type de contenu et d'un terme de taxonomie" Merci

le problème vient de la taxonomie, je voudrais traduire ceci en php :

" Si le contenu est de type page_fiche_formation et si le vocabulaire a pour vid 1 , alors récupérer le nom du terme et l'utiliser pour constituer le nom de template de type node-nomDuTerme.tpl"

je pense que ce code répond à une partie de mes conditions, mais le problème vient du $node->taxonomy[1]->vid == 1 qui, si je comprends bien, vérifie que le terme est bien le tid 1 du vid 1...moi je voudrais juste vérifier le vid du vocabulaire, le terme étant récupéré par la suite...les boules de pas savoir coder en php...je m'arrache les cheveux sur un truc assez simple pour un dev...et trés compliqué pour moi.

si une âme charitable passe par la...

Pour récupérer la taxo, il faudrait je pense utiliser l'API qui va bien :

http://api.drupal.org/api/drupal/modules--taxonomy--taxonomy.module/func...

Voir peut-être les autres fonctions du module taxonomie : http://api.drupal.org/api/drupal/modules--taxonomy--taxonomy.module/6

Pour voir le contenu de ton node, var_dump($node) permet de faire cela rapidement

arff tu surestime mes capacités, j'ai déja lu ces pages de l'API mais je ne sais pas du tout ou et comment insérer cela dans mon code départ...je sais ce que je veux et une idée du comment mais je suis trop limité en php pour y arriver seul...donc je tente ça :

<?php
/*Permet d'attribuer un template de node différent selon terme de taxo et type de contenu
 * - NE PAS OUBLIER DE CHANGER LE NOM DU THEME !!!___
http://drupal.org/node/723544 */
function cyrano_ce_preprocess_node(&$vars) {
 
$node = $vars['node'];
// on verifie l'appartenance au type de contenu
 
if($node->type == 'page_fiche_formation') {
   
// verifie si le terme appartient bien au vocabulaire vid=1
   
if(!empty($node->taxonomy) && $term->vid == 1) {
//je recupere le nom du terme pour l'utiliser dans le nom du template
    
function taxonomy_node_get_terms($node, $key = 'name'){
     
$vars['template_files'][] = 'node-' . $term->name;
     }
    }
  }
}
?>

pour le var_dump($node) ; c'est quoi cet animal ? je dois le mettre ou ? car ça peut m'aider dans le debugage, autre point ou je suis ignare..

Voilà un truc qui me donne le nom du terme de mon vocabulaire :

function mon_theme_preprocess_node(&$vars) {
$node = $vars['node'];
   // on verifie l'appartenance au type de contenu
   if($node->type == 'mon_contenu_type') {
       if ( ! empty($node->taxonomy)  ) {
// Récupération du 1er element du tableau
           $term = array_shift($node->taxonomy);
    // verifie si le terme appartient bien au vocabulaire vid=1
           if ( $term->vid == 1 ) {
//              $tid = $term->tid;
//                echo "<br/>TIDS (shift)= ",var_dump($tid);
//               echo "<br/>Name = ",$term->name," dump : ",var_dump($term->name);
              $vars['template_files'][] = 'node-' . $term->name;
          }
      }
 
    }
}

Tu peux activer le debug en enlevant les // devant les lignes echo
Une fois que c'est OK, tu peux virer les lignes en commentaire.
J'espère que ce coup-ci ce sera bon

bien j'ai remplacé dans mon template.php et decommenté pour avoir le debug...mais rien ne s'affiche et devel ne liste pas node-term_name.tpl comme une possibilité...

ou doit s'afficher le echo ?

le systeme fonctionne de maniere basique car il prend bien mon node-page_fiche_formation.tpl...

a quoi sert le $term = array_shift($node->taxonomy); ?

Pour le debug ce n'est pas trop grave; avec echo, ça s'affiche en vrac dans la page de toute façon.
Le array_shift récupère juste le premier élément du tableau.

Si tu n'as qu'un terme de taxonomie par contenu, ça suffit, sinon il faudrait faire une boucle.

La question est : est-ce que ça fonctionne, et est-ce que ça répond au besoin ?

Pour le debug, on peut aussi utiliser la fonction drupal_set_message('mon texte','status'); qui affiche de manière plus satisfaisante...

alors ça ne fonctionne pas mais je pense que ça vient du tableau de taxonomie, car dans mon vocabulaire j'ai 3 termes possibles, et donc 3 templates possibles..

possible que le debug affiche en blanc sur blanc..je pense que tu n'es pas loin de la solution...

Oups, j'avais mal lu.

1 seul terme, donc normalement c'est bon, il me semble que la requête donne le nom du terme de vocabulaire ($term->name), et pas le nom du vocabulaire.

Tu peux essayer :

function mon_theme_preprocess_node(&$vars) {
$node = $vars['node'];
   // on verifie l'appartenance au type de contenu
   if($node->type == 'mon_contenu_type') {
       if ( ! empty($node->taxonomy)  ) {
// Récupération du 1er element du tableau
           $term = array_shift($node->taxonomy);
    // verifie si le terme appartient bien au vocabulaire vid=1
           if ( $term->vid == 1 ) {
              $tplfile = 'node-' . $term->name. 'tpl.php';
              $vars['template_files'][] = $tplfile;
           drupal_set_message('Term name : '.$term->name,'status');
           drupal_set_message('Template file : '.$tplfile,'status');
          }
      }

    }
}

ceci devrait afficher quelques infos intéressantes..

oui c'est la bonne notation mais ce que je comprends pas c'est que ton tableau liste le 1er terme du vocabulaire seulement...alors comment fait il pour trouver les termes 2 et 3 ? il ne pourra sortir que le 1er non ?

car actuellement je fais un test avec le terme tid 1 du vid 1 ; le vid 1 contient 3 termes ( tid 1 , tid 2 , tid 9 ) , d'aprés tes explications cela devrait marcher vu que le code recherche le 1er terme du vid 1..à moins que le 1er ne soit pas forcément le tid 1...

bref je pense que ton idée de boucle est la bonne, il faut récupérer le terme utilisé dans le vid 1 et utiliser son $term -> name comme partie du nom du node.tpl custom.. et avoir ainsi node-<$term->name>.tpl.php

Il récupère les termes du vocabulaire affectés au contenu (et pas les termes du vocabulaire en général).

Donc si 1 seul terme par contenu, ce sera le terme récupéré.

Je fais des tests de mon côté, et selon les contenu il me récupère bien le tag du contenu

ok nos messages se sont croisés, donc voici ce que renvoi devel :

[tid] => 4
[vid] => 2
[name] => Bac Pro
                   
[tid] => 1
[vid] => 1
[name] => Pôle Tertiaire

mais rien ne s'affiche en debug...je vide le cache et tout ce que je peux...
voici l'url de test : http://www.lycee-celony.com/bac-pro-commerce

juste pour éviter les malentendus, le code va bien dans template.php ? je deviens dingue..en plus va falloir normaliser les caractères pour virer les accents et autre espaces...j'ai trouvé un code la dessus, je le colle ici, ça doit ressembler à ça:

strip_tags($term->name))

Quand on regarde le code de la page, il y a plein de trucs dans des balises

<

pre>.

Tu peux chercher sur "RECURSION", on trouve :[#type_name] => page_fiche_formation

Pour le reste, c'est difficile d'aller plus loin pour moi.

bon je pense aprés avoir chercher dans le source que j'ai une idée..en effet le terme de taxo "Pôle Tertaire" n'apparait pas..alors qu'il sort bien au niveau de devel...bref si drupal utilise le source il ne trouvera jamais ce terme...et il s'avere que j'utilise un module pour ne pas afficher la taxonomie...il se pourrait bien que ce soit la cause du probleme....il restera alors à normaliser les caracteres du terme pour que ça marche...il faut que je creuse , car selon que le module utilise un display:none ou un visibility:hidden, le terme est ou pas inclus dans le source....

voila je pense que ça vient de la : ce module http://drupal.org/project/term_display propose une option "none" ou une "option load" , je viens de passer le vocabulaire en load et il apparait dans le source...devel ne propose pas lalternative au node.tpl mais peut etre parceque je ne l'ai pas créé...voici les options possibles , laquelle est la plus adaptée ?

default (change nothing, and display the terms in the normal way)

list (remove from the standard display and instead display as a list with the vocabulary name)

custom (remove from the standard display and instead display as a comma-separated list with the vocabulary name)

load (remove from standard display and store the term data for the vocabulary in the $node object so it can be processed in the theme: details of how this works are on the handbook page)

none (do not display the term).

voici une tentative de code pour nettoyer le nom du terme et le formater pour un usage de programmation (sans accent, sans espaces); doit y avoir des erreurs car je tente d'incorporer un code trouver dans des cours php :

<?php
function cyrano_ce_preprocess_node(&$vars) {
$node = $vars['node'];
  
// on verifie l'appartenance au type de contenu
  
if($node->type == 'page_fiche_formation') {
       if ( ! empty(
$node->taxonomy)  ) {
// Récupération du 1er element du tableau
          
$term = array_shift($node->taxonomy);
   
// verifie si le terme appartient bien au vocabulaire vid=1
          
if ( $term->vid == 1 ) {
//nettoyage du nom pour usage dans tpl
              
function valideChaine($term->name){
 
$term->name = preg_replace('<code>\s+</code>', '<em>', trim($term->name));
 
$term->name = str_replace("'", "</em>", $term->name);
 
$term->name = preg_replace('<code>_+</code>', '_', trim($term->name));
 
$NomTermeValide=strtr($term->name,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 
"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
  return (
$NomTermeValide);
}

             
$tplfile = 'node-' . $NomTermeValide. 'tpl.php';
             
$vars['template_files'][] = $tplfile;
          
drupal_set_message('Term name : '.$term->name,'status');
          
drupal_set_message('Template file : '.$tplfile,'status');
          }
      }

    }
}
?>

j'ai laissé tomber le nettoyage du nom (erreur de syntaxe) , et par contre j'ai voulu tester hors boucle si les messages apparaissent, et c'est le cas, j'en déduit que le terme de taxonomie n'est pas bien testé ou reconnu par la fonction, du coup le processus ne vas pas plus loin...vincent si tu me lis...

quand tu dis qu'il recupère bien le tag, cela veut dire que

<?php
           drupal_set_message
('Term name : '.$term->name,'status');
          
drupal_set_message('Template file : '.$tplfile,'status');
        
?>

affichent la valeur du terme ? ou/et que devel te propose un node-nom-du-terme.tpl comme alternative ?

à part le souci de module je ne vois pas pourquoi chez moi ça bloque..

EDIT: je continue de creuser et j'ai trouvé ceci : http://drupal.org/node/543656 qui traite du theming avec term display module...

ben a je comprends plus...j'ai tenté plusieurs choses :

  • activé/desactivé le module term_display =>> rien ne change
  • changé le type d'affichage dans term_display ; passé sur load in $node => rien ne change
  • retiré node-page_fiche_formation.tpl => plus de mise en forme mais pas d'affichage issu de la fonction de theming

sans cette fonction mon design ne pourra pas etre appliqué...ça fout les boules car nous ne sommes pas loin du tout, car aprés restera juste à obtenir un term-> name nettoyé..ce qui doit pas être le plus compliqué je pense.

Dans ton code du template ci-dessus, il y a un mélange de fonctions. Il faut les séparer :

<?php
//nettoyage du nom pour usage dans tpl
function valideChaine($term){
 
$term = preg_replace('<code>\s+&lt;/code>', '<em>', trim($term));
 
$term = str_replace("'", "</em>", $term);
 
$term = preg_replace('&lt;code><em>+&lt;/code>', '</em>', trim($term));
 
$NomTermeValide=strtr($term,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 
"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
  return (
$NomTermeValide);
}

function cyrano_ce_preprocess_node(&$vars) {
$node = $vars['node'];
  
// on verifie l'appartenance au type de contenu
  
if($node->type == 'page_fiche_formation') {
       if ( ! empty(
$node->taxonomy)  ) {
// Récupération du 1er element du tableau
          
$term = array_shift($node->taxonomy);
   
// verifie si le terme appartient bien au vocabulaire vid=1
          
if ( $term->vid == 1 ) {
          
drupal_set_message('Contenu de Node : '.var_dump($node),'status');
             
$NomTermeValide = valideChaine($term->name)
             
$tplfile = 'node-' . $NomTermeValide. 'tpl.php';
             
$vars['template_files'][] = $tplfile;
          
drupal_set_message('Term name : '.$term->name,'status');
          
drupal_set_message('Template file : '.$tplfile,'status');
          }
      }

    }
}
?>

=> dans la fonction valideChaine, j'ai du remplacer des "<" par "&lt;", il faudra les remettre correctement.

j'ai ajouté un dump du node ; il faudra voir si ça affiche les infos de taxonomie aussi (dont le name)

ben je ne sais plus quoi penser...rien ne sort, synomnyme que ça bloque au niveau du type ou du terme, car quand je mets les codes de debug en dehors de la boucle finale sur le terme j'ai un affichage dans mon node, mais vide, donc la fonction est bien "lue" mais ne va pas à son terme si je puis dire...demain j'essaye sur une autre install de drupal pour voir..

merci bcp de ton aide en tout cas...j'espere trouver le problème rapidement.

comme prevu la code fonctionne beaucoup mieux sur une autre install...voici ce qui sort du debug :

    * Term name : Terme test 1
    * Template file : node-tpl.php

    * warning: preg_replace(): Unknown modifier '\' in /var/www/drupal6/sites/all/themes/Celony_cyrano/template.php on line 23.
    * warning: preg_replace(): Unknown modifier '<' in /var/www/drupal6/sites/all/themes/Celony_cyrano/template.php on line 25.

du coup malgre que j'ai remis les "<" en place il y a une erreur, peut etre pourrais tu envoyer le code via fichier txt attaché..je vais chercher pourquoi cela ne marche pas sur mon site distant maintenant...

tadaaa c'est bien ce pu.. de module term display, le problème étant qu'en fait les options proposées et fort attrayantes ne font aucun effets (testés en local)...du coup quand je laisse la taxo en affichage normal j'ai bien :

    * Contenu de Node :
    * Term name : Pôle Tertiaire
    * Template file : node-tpl.php
    * Type du node hors : page_fiche_formation
    * Term name hors : Pôle Tertiaire

    * warning: preg_replace() [function.preg-replace]: Unknown modifier '\' in /www/celony/sites/all/themes/Celony_cyrano/template.php on line 23.
    * warning: preg_replace() [function.preg-replace]: Unknown modifier '<' in /www/celony/sites/all/themes/Celony_cyrano/template.php on line 25.

donc il faut que je résolve le problème des warnings car le node.tpl ne peut pas se former semble t il..je vais garder ce module car il me sert bien, mais faudra faire autrement pour ce vocabulaire..

juste une idée comme ca, si je veux pouvoir utiliser cette suggestion pour d'autres types de contenu et d'autres termes/vocabulaire, puis je ajouter mon type comme ceci :

<?php
//nettoyage du nom pour usage dans tpl
function valideChaine($term){
$term = preg_replace('<code>\s+</code>', '<em>', trim($term));
 
$term = str_replace("'", "</em>", $term);
 
$term = preg_replace('<code>_+</code>', '</em>', trim($term));
 
$NomTermeValide=strtr($term,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 
"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
  return (
$NomTermeValide);
}


function
cyrano_ce_preprocess_node(&$vars) {
$node = $vars['node'];
  
// on verifie l'appartenance au type de contenu
  
if($node->type == 'page_fiche_formation', 'mon_nouveau_type') {
       if ( ! empty(
$node->taxonomy)  ) {
// Récupération du 1er element du tableau
          
$term = array_shift($node->taxonomy);
   
// verifie si le terme appartient bien au vocabulaire vid=1
          
if ( $term->vid == 1 ) {
         
// drupal_set_message('Contenu de Node : '.var_dump($node),'status');
             
$NomTermeValide = valideChaine($term->name);
             
$tplfile = 'node-' . $NomTermeValide. 'tpl.php';
             
$vars['template_files'][] = $tplfile;
         
drupal_set_message('Term name : '.$term->name,'status');
          
drupal_set_message('Template file : '.$tplfile,'status');
          }
          if (
$term->vid == 4 ) {// condition sur autre terme de vocabulaire
         
             
$NomTermeValide = valideChaine($term->name);
             
$tplfile = 'node-' . $NomTermeValide. 'tpl.php';
             
$vars['template_files'][] = $tplfile;
         
          }
      }
 
//drupal_set_message('Type du node hors : '.$node->type,'status');
// drupal_set_message('Term name hors : '.$term->name,'status');
   
}
}
?>

cela pourrait etre bien, car reutilisable pour faire differents template de node, et ne plus etre limité aux seuls template de page...

Bien j'ai essayé de faire évoluer le code mais ça ne marche pas..enfin plus, j'ai voulu rajouter la possibilité d'avoir plusieurs type de contenu (pas de soucis) mais aussi plusieurs vocabulaire ( vid = soucis), voila ou j'en suis et ça me parait bon mais ça ne marche plus..:(

<?php
function cyrano_ce_preprocess_node(&$vars, $hook) {
   
//Partie regions dans node.tpl
 
$vars['pole_bloc_G'] = theme('blocks', 'pole_bloc_G');
 
$vars['pole_bloc_C'] = theme('blocks', 'pole_bloc_C');
 
$vars['pole_bloc_D'] = theme('blocks', 'pole_bloc_D');
//Partie template node.tpl
$node = $vars['node'];
$lesTypes=array('page_fiche_formation', 'page_pole');
$lesVid=array('1');
// on regarde si le type est dans le tableau
if ( in_array($node->type,$lesTypes) ) {
       if ( ! empty(
$node->taxonomy)  ) {
// Récupération du 1er element du tableau
          
$term = array_shift($node->taxonomy);
   
// verifie si le terme appartient bien au vocabulaire vid=1 définit dans le tableau
          
if ( in_array($term->vid,$lesVid) ) {
        
             
$tplfile = 'node-'.$node->type.'-'. $term->vid.'-'.$term->tid ;
             
$vars['template_files'][] = $tplfile ;
         
//drupal_set_message('Term name : '.$term->name,'status');
          
drupal_set_message('Template file : '.$tplfile,'status');
          }
   
         
      }
 
//drupal_set_message('Type du node hors : '.$node->type,'status');
// drupal_set_message('Term name hors : '.$term->name,'status');
   
}
}
?>

si quelqu'un peut m'expliquer le problème, c'est avec plaisir...merci

EDIT: sur mon local ca marche, ça doit etre un probleme de cache sur le distant...
en fait le problème vient du fait que j'ai 2 vid appliqués à ce contenu et du coup le code prend le second vid comme base, à savoir :

$lesVid=array('1','3');

il donne comme tpl : node-page_fiche_formation-3-10.tpl.php alors que moi j'ai node-page_fiche_formation-1-1.tpl.php...du coup je vais renommer mes tpl...dommage qu'il ne propose pas l'un ou l'autre..

bien j'ai un souci avec le poids des termes et des vocabulaires, car drupal sembe prendre le vocabulaire le plus récemment ajouté, ainsi le vid 3 surpasse le vid 1...et moi j'ai basé mes tpl sur le vid 1...du coup comment faire pour que drupal utilise le vid que je veux ?
je peux aussi ajouter les 2 tid dans les noms de tpl mais je ne sais pas le faire..

si quelqu'un sait..merci