Categories > TinyButStrong general (FR) >

sous-template

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Franck
Date: 2012-10-03
Time: 04:55

sous-template

Bonjour,
cela fais très longtemps que j'utilise TBS, mais je n'utilisais pas l'option des sous-templates. J'utilise la version 3.8.1.
Je n'arrive pas faire fonction les sous-templates correctement.

voici mon fichier index.php simplifié

<?php
require_once('Tbs.class.php');
$tbs = new clsTinyButStrong;
...
$subTpl=group.php;
$tbs->LoadTemplate('tpl.general.0.0.html');
$tbs->Show();
?>
le template tpl.general.0.0.html
<!DOCTYPE html>
<html>
<head>       
<meta charset="utf-8">       
</head>
<body>
<div>[onload;script=[var.subTpl];subtpl]</div>
</body>
</html>
le script pour group.php
<?php
if (isset($this))
{  
    $tbs = &$this;
}
else
{
    require_once('Tbs.class.php');
    $tbs = new clsTinyButStrong;
}
......

$tbs->LoadTemplate('tpl.sub.groups.html');
$tbs->MergeBlock('group', $listOfGroup);
$tbs->Show();
?>
et enfin le template tpl.sub.groups.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">       
</head>
<body>
<table>
<thead>
<tr>
...
</tr>
</thead>
<tbody>
<tr>
<td>[group.name;block=tr]</td>
<td>([group.members;] membres)</td>
<td>[group.description;]</td>
</tr>
</tbody>
</table>
</body>
</html>

Malheuresement c'est une page blanche qui est retourné. J'ai donc effectué plusieurs test.
-Si j’exécute le script group.php tout seul cela fonctionne, et cela me retourne le résultat attendu. Ce n'est donc pas le script qui plante!
-Si dans le fichier index.php, j'initialise la variable a un nom de fichier html valide, bien sur, cela fonctionne.
Voyez vous ou est l'erreur. J'ai beau me référer a la doc je ne trouves pas.
Merci a vous
By: Franck
Date: 2012-10-04
Time: 20:35

Re: sous-template

Bonjour,
j'ai trouvé une solution qui marche. L'appel de la définition de mes classes dans le fichier group.php doit se faire vie un "include_once" ou un "require_once", sinon ca plante.

<?php
if (isset($this))

    $tbs = &$this;
}
else
{
    require_once('Tbs.class.php');
    $tbs = new clsTinyButStrong;
}
include('config.php');
include_once('maclass.php');
...
$tbs->LoadTemplate('tpl.sub.groups.html');
$tbs->MergeBlock('group', $listOfGroup);
$tbs->Show();
?>

Si quelqu'un peu m'expliquer, j'pprécierais
By: Skrol29
Date: 2012-10-04
Time: 23:36

Re: sous-template

:-)
By: Franck
Date: 2012-10-05
Time: 04:36

Re: sous-template

est ce normal ce comportement?
By: Skrol29
Date: 2012-10-05
Time: 18:18

Re: sous-template

Lorsqu'un script de sous-template plant à cause d'une erreur PHP, alors il retourne un contenu vide et l'erreur n'est pas affichée.
C'est parce que le contenu est détourné par TBS.

Pour déboger, il faut exécuter ton script de sous-template comme si c'était un script principal. Le passage "if (isset($this)) ..." permet justement cela.

Tu avais donc probablement une erreur due à une référence de classe manquante qui était nécessaire pour ton code dans la partie que tu n'as pas détaillé ("...").



By: Franck
Date: 2012-10-06
Time: 01:14

Re: sous-template

Bonsoir Skrol29,
merci pour ton support, et en passant merci pour ce fabuleux moteur de template.
Pour en revenir a nos moutons, le script group.php fonctionnait en autonome sans aucune erreur.
La cause est peut être que dans mon fichier principal je faisais appel a mes classes avec un include_once.

Pour changer de sujet, j'ai vu quelque part sur le forum que tu ne maintenais plus la version française de la doc, par manque de temps, et de plus j'ai trouvé de petites erreurs dans la doc anglaise (lien non valide , erreur de frappe au clavier..), je te propose un coup de main si tu veux.
bye et a bientôt.