Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1046 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu]Templates imbriqués

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu]Templates imbriqués

n°803983
esox_ch
Posté le 23-07-2004 à 09:33:15  profilanswer
 

Bonjour,
 
Voila mon probleme : J'ai 1 template "a" qui contient un champ "x", je voudrais qu'en une circonstance bien précise PHP remplace x par le contenu d'un autre template "b", ceci "virtuellement" si vous voyez ce que je veux dire, de la sorte que le ficher de depart ne soit pas touché.
 
Merci d'avance


Message édité par esox_ch le 26-07-2004 à 12:34:44
mood
Publicité
Posté le 23-07-2004 à 09:33:15  profilanswer
 

n°804204
esox_ch
Posté le 23-07-2004 à 11:49:16  profilanswer
 

up

n°804226
T509
$job->GetJob(now)
Posté le 23-07-2004 à 11:57:40  profilanswer
 

if
    //traitement
    if X
        //traitement
    fin if
else
    //traitement
fin if


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°804285
esox_ch
Posté le 23-07-2004 à 12:33:17  profilanswer
 

heu j'ai peur de ne pas comprendre ...
P-e que je me suis mal exprimé, admettons que mon 1er template contienne :  
 

Code :
  1. <html>
  2. <head>
  3. <title>{title}</title>
  4. <body>{body}</body>
  5. </html>


 
et mon 2ème template :
 

Code :
  1. <table>
  2. <tr>
  3.   <td>{td}</td>
  4. </tr>
  5. </table>


 
Je voudrais pouvoir en 1er lieu assigner une valeur a {td} , puis prendre le resultat du 2ème template et l'affecter à la valeur {body}.

n°804542
esox_ch
Posté le 23-07-2004 à 15:11:07  profilanswer
 

J'ai pensser a modifier un peu le ficher IT.php de la sorte qu'au lieu d'imprimer le resultat (quand on lance show();) ca me retourne un variable de texte, mais a votre avi il y a pas plus simple?

n°804544
T509
$job-&gt;GetJob(now)
Posté le 23-07-2004 à 15:11:56  profilanswer
 

A ce monment là, tu prépares $body en l'affectant avec le résultat de l'application du premier template et ensuite tu travailles sur le second template en allat y remplacer {body} par $body


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°805267
esox_ch
Posté le 24-07-2004 à 12:49:53  profilanswer
 

Oui je veux bien, mais comment recuperer $body ? Etant donné que l'affichage de la page se fait grace au ficher /html/it.php et a la commande show(); ? Il faudrait que je modifie it.php?

n°805269
T509
$job-&gt;GetJob(now)
Posté le 24-07-2004 à 12:52:04  profilanswer
 

donne ton code. Sans cela, c'est difficile à dire.


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°805275
esox_ch
Posté le 24-07-2004 à 13:24:34  profilanswer
 

Code :
  1. function template($online,$boutons,$history,$forum_v,$pages,$file,$info)
  2. {
  3.   if(empty($online))
  4.    $online = "*******";
  5.   if(empty($boutons))
  6.    $boutons = "&nbsp;";
  7.   if(empty($history))
  8.    $history = "&nbsp;";
  9.   if(empty($forum_v))
  10.    $forum_v = "&nbsp;";
  11.   if(empty($pages))
  12.    $pages = "&nbsp;";
  13.   if(empty($file))
  14.    $file = "skin.tpl";
  15.   if(empty($info))
  16.    $info = "&nbsp";
  17.   else
  18.    $info = "Page générée en ~".$info." secondes";
  19.   include_once("HTML/IT.php" );
  20.   $forum = new IntegratedTemplate("templates" );
  21.   $forum->loadTemplatefile($file);
  22.   $forum->SetVariable(array("online" => $online,"boutons" => $boutons,"history" => $history,"forum" => $forum_v,"pages" => $pages,"file" => $file ,"info" => $info));
  23.   $forum->show();
  24. }
  25. function tpl($farray)
  26. {
  27. include_once("HTML/IT2.php" );
  28.   $forum = new IntegratedTemplate("templates" );
  29.   $forum->loadTemplatefile('profil.tpl');
  30.   $sarray = "";
  31.   while(list($cle,$valeur) = each($farray))
  32.   {
  33.    if(empty($sarray))
  34.       $sarray .= "$cle => $valeur";
  35.      else
  36.       $sarray .= ",$cle => $valeur";
  37.   }
  38.    $template_array[]= array($sarray);
  39.   $forum->SetVariable($template_array);
  40.   $forum->show();
  41. }


 
voila les 2 code pour les template, je voudrais que le resultat du 1er show() devienne le parametre de la 2ème (si c pas un array j'arrengerais cela apres).
 
J'espere avoir été clair ...


Message édité par esox_ch le 24-07-2004 à 13:24:54
n°805283
T509
$job-&gt;GetJob(now)
Posté le 24-07-2004 à 13:43:04  profilanswer
 

je ne comprends pas ton code
show est une méthode issue d'une classe et je ne connais pas la classe. Tu dois essayer d'utiliser un moteur de template. N'existe-t-il pas un forum dédié à ce moteur ?


Message édité par T509 le 24-07-2004 à 13:44:22

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
mood
Publicité
Posté le 24-07-2004 à 13:43:04  profilanswer
 

n°805288
esox_ch
Posté le 24-07-2004 à 13:52:18  profilanswer
 

show() est une methode issue de /html/it.php qui est un ficher stocké dans les pear d'apache, un lib comme une autre quoi

n°805299
T509
$job-&gt;GetJob(now)
Posté le 24-07-2004 à 14:15:48  profilanswer
 

Cela ne change pas, je ne connais pas la classe.
J'ai regardé rapidement et je ne sais pas te répondre


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°805301
esox_ch
Posté le 24-07-2004 à 14:17:42  profilanswer
 

A ton avi, si je modifie ca :  
 

Code :
  1. function show($block = "__global__" ) {
  2.         print $this->get($block);
  3.     }


 
Au lieu de faire print, je le met dans un variable qu'apres j'utilise plus loin, ca peut marcher?

n°805305
T509
$job-&gt;GetJob(now)
Posté le 24-07-2004 à 14:23:05  profilanswer
 

essaie, je ne sais pas.
 
La classe IT ne semble pas construite pour faire des boucles de mise en forme. Cela semble plutôt être fait pour :
- preparer les données
- les mettre en tableau
- parser le template


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°805317
esox_ch
Posté le 24-07-2004 à 14:36:48  profilanswer
 

Je sais justement, c'est pour ca que je demandais comment faire ... Parceque j'aurais préféré laisser le IT.php comme il etait ... bon je vais modifier un peut tout ça ... merci

n°805494
joelan
Posté le 24-07-2004 à 22:13:48  profilanswer
 

salut, voici une methode très simple qui peut résoudre ton problème
 

Code :
  1. function getTable($fichier = null)
  2. {
  3. $fp = fopen($fichier,"rb" );
  4. if($fp)
  5. {
  6. $codeHTML = fread($fp, filesize($fichier));
  7. fclose($fp);
  8. }
  9. return $codeHTML;
  10. }
  11. //pour ton template tu fe
  12. $template->set_var('TABLE',getTable('tonfichier.html');


 
PS : ya surement un truc à faire au niveau des CHMOD  :pt1cable:


Message édité par joelan le 24-07-2004 à 22:17:37
n°805597
esox_ch
Posté le 25-07-2004 à 04:30:56  profilanswer
 

Je vois pas tres bien en quoi ca va m'aider d'extraire l'html du 2ème ficher ... Pask le {td} va rester tel ... non? ...
P.S: Pourquoi faire une lecture rb ?

n°805726
esox_ch
Posté le 25-07-2004 à 16:24:05  profilanswer
 

Enfait apres avoir essayer de modifier le ficher IT.php , je me trouve a ca :  
 
Ceci marche :

Code :
  1. function show($block = "__global__" ) {
  2.         echo $this-> get($block);
  3.     }


Ceci ne me retourne aucune valeur :  

Code :
  1. function show($block = "__global__" ) {
  2.          $resultat = $this->get($block);
  3.          return $resultat;


 
Au cas ou ... le ficher IT.php se trouve a la racine de php, dans le pear , dossier HTML.
 
Merci d'avance


Message édité par esox_ch le 25-07-2004 à 16:50:00
n°808057
joelan
Posté le 27-07-2004 à 21:23:49  profilanswer
 

Ouais le HTML inclus est statique (donc pas parsé).
Si tu dois parsé le code tu px tenter ça:
 

Code :
  1. $templateMAJ = new template($TEMPLATE_DIR);
  2. $templateMAJ -> set_file('file', 'fichierCadre.html');
  3. $templateMAJ -> set_block('file','BlockLevel1', 'blv1');
  4. $templateMAJ -> set_block('BlockLevel1', 'ContentBlockLvl1' , 'cnblv1');
  5. // tu inclus les gros éléments HTML d'abord ex: banniere,  
  6. //menu etc..
  7. $templateMAJ -> set_var('BANNIERE', $ban);
  8. $templateMAJ -> set_var('MENU', $this->getTABLE('tonmenu.html');
  9. //un deuxiéme template avec le fichier qui t'interesse
  10. // tu parses un tableau
  11. $template = new Template($TEMPLATE_DIR);
  12. $template-> set_file('file2', 'lapageaParse.html');
  13. $template -> set_block ('file2', 'Blocklevel2', 'blvl2')
  14. $template -> set_block ('BlockLevel2', 'resultBlock', 'res');
  15. foreach ( $resArray as $key => $value )
  16. {
  17. $template -> set_var ( 'ID' , $resArray[$key]);
  18. $template -> set_var ( 'VALUE' , $resArray[$value]);
  19. $template -> parse ('res', 'resultBlock' , TRUE)
  20. }
  21. //ensuite tu parses le contenude file2 ds ton $templateMAJ
  22. // la seule ligne a retenir est la
  23. $templateMAJ -> set_var( 'LEVEL2', $template->parse('blvl2', 'Blocklevel2'));
  24. $templateMAJ -> parse ('cnlvl1', 'ContentBlocklvl1');
  25. $templateMAJ -> parse ('blv1' , 'BlockLevel1');
  26. $templateMAJ -> pparse ('output', 'file');


 
Quelles librairies utilise tu ?


Message édité par joelan le 27-07-2004 à 21:35:32

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu]Templates imbriqués

 

Sujets relatifs
[résolu]récupérer une valeur stockée dans session en javascript[Resolu] [RegExp] récuperer une chaine encadrée par 2 balises
[php] affichage couleur selon une date[résolu][JS][RESOLU] Accès d'1 elt a partir du nom contenu dans une var
[Résolu] Il me faut un boss en programmation.[Résolu] Probleme de résolutin de code html ecrit avec du php par echo
pop up centré passant a travers les anti pop up [résolu]Création d'un fichier .hlp pour des Userform [RESOLU]
n'activer mon lien que pour le pop up [résolu] 
Plus de sujets relatifs à : [Résolu]Templates imbriqués


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR