Categories > TinyButStrong general (FR) >

Merge PHP global variables 1 fois sur 2

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: TiTi
Date: 2006-03-17
Time: 17:27

Merge PHP global variables 1 fois sur 2

Bonjour à tous,
je viens de me mettre à TBS et sa rocks !! au départ j'utilisais le template de phpbb et puis je suis tombé sur http://cyberzoide.developpez.com/php4/template/ ^^
j'ai pas encore testé le système de cache mais sa à l'air cool

Bref passons à mon problème  :
ma (première) page fonctionne nickel, elle est composée de 3 templates à vrai dire (header.htm, index.htm et footer.htm)
Lorsque j'ouvre le navigateur sur cette page tout fonctionne
Si je fais refresh ou que je place mon curseur ds la barre d'adresse+entrée, tout fonctionne
Si j'appel ma page avec un paramètre ds l'url, tout fonctionne
Et si maintenant je rappelle index.php en enlevant le paramètre dans la barre d'adresse = sa plante ! il me dit "TinyButStrong Error (Merge PHP global variables): Can't merge [var.heure1] because there is no PHP global variable named 'heure1'. This message can be cancelled using parameter 'noerr'." , et ce pour toutes les variables des .htm
C'est extrémement bizarre puisque à l'ouverture du navigateur ca ne plante pas !!

Viendez-voir ici, vous comprendrez mieux pas vous même : http://www.gateship-one.net/12345/index.php
le seul lien valide est celui du changement de langue, pour passer de english à fr, utilisez-le puis enlever le paramètre langue dans l'url et appuyés sur la touche entrée !

d'ailleurs d'après le comparatif des sytème de templates (cf plus haut ds mon post), celui-ci gère le multi-langage .... ok mais comment ?
moi j'ai codé ca en php, le contenu des variables n'est pas le même suivant la langue avec un bête if - else
By: Skrol29
Date: 2006-03-17
Time: 19:04

Re: Merge PHP global variables 1 fois sur 2

Bonjour,

J'ai suivi tes indications et effectivement je constate les messages d'erreur. Est ce que par hasard tu utiliserais des sessions ? On ne dirait pas car je n'ai pas trouvé de cookies déposé par ton site.

Je pense que le problème vient de ton code. Il faudrait avoir plus de détail là dessus pour diagnostiquer. Une erreur typique est d'assigner les variables après le ->Show(). Ou bien de placer ces variables dans un sous-modèle fusionné avec un script et le paramètre "subtpl".
By: TiTi
Date: 2006-03-17
Time: 19:26

Re: Merge PHP global variables 1 fois sur 2

yop, merci d'avoir répondu assez vite

oui j'utilise des sessions, et des cookies
on l'occurence on a pas encore fait le module de connection donc (apres relecture du fichier qui s'occupe des variables de session/cookies), je ne créé ni variable de session, ni cookie !
au passage : sa pose prblm si on en créé ?!
le ->Show() est la dernière instruction php exécutée.
je n'utilise pass de "subtpl"

plus de détail sur le code :

index.php :
-------------
include('includes/init.php'); // gère la connection à la bdd + les infos de session/cookie
$title="Page d'accueil"; // [var.title] ^^
include('templates/'.$s_theme.'/page.php'); //php propre au template, génère les variables propres au header et footer du template

        $TBS = new clsTinyButStrong; 
    $TBS->LoadTemplate('templates/'.$s_theme.'/header.html');
    $TBS->LoadTemplate('templates/'.$s_theme.'/index.html', '+'); // '+' pour dire qu'on ajoute
    $TBS->LoadTemplate('templates/'.$s_theme.'/footer.html', '+');   
    /*   
    Remarque : on peut aussi juste laisser la ligne du milieu et rajouter sa dans le fichier de template :
        [onload;file='templates/[var.s_theme]/header.htm']    
                   <- code du template ->
        [onload;file='templates/[var.s_theme]/footer.htm']
    */

    if (isset($s_pseudo))
    {
        $MEMBRE = $lang['index1'];
        $IMAGE = $lang['index4'];
        $INFOS = $lang['index6'];
    }
    else
    {
        $MEMBRE = $lang['index2'];
        $IMAGE  = $lang['index5'];
        $INFOS = $lang['index3'];
    }

$TBS->Show();


init.php :
-----------
taupe secrète :-p

page.php :
------------
$heure1=$lang['index7'];          
$heure2=$lang['index8'];
if($s_langue==0)   
{
    $langueid=1;
    $langue=$lang['langue'.$langueid];
}
else
{
    $langueid=0;
    $langue=$lang['langue'.$langueid];
}

header.htm :
--------------
<html>
<head>
....
<title>Stargate Atlantis - [var.title] - GateShip-One.net</title>
....
<div id="slogan">[var.heure1] [var..now;frm='dd/mm/yy'] [var.heure2] [var..now;frm='hh:nn']</div>
...
<a href="[var..script_name]?langue=[var.langueid]">[var.langue]</a>
....

footer.htm :
-------------
[var.copyright;htmlconv=no;]
        </div>
    </div>
</div>
</body>
</html>

index.htm :
--------------
<div class="contour">
    <div class="relief">[var.MEMBRE]</div>
    <div class="cadre100">
        <img src="images/membres/[var.IMAGE].jpg" align="left" hspace="2" class="pics" alt="[var.IMAGE]" />[var.INFOS;htmlconv=no;]
    </div>
</div>


RMQ :
-je vous ai pas tout mis... ^^
-les variables title, MEMBRE, IMAGE, INFOS, ... (index.htm) sont définies dans index.php
-les variables heure1, heure2, langue, langueid, ... (header.htm) sont définies dans page.php
et peu importe où elles sont créés, TBS affiche une erreur
By: Skrol29
Date: 2006-03-17
Time: 20:39

Re: Merge PHP global variables 1 fois sur 2

Salut,

C'est peut être un problème de restitution de variable de session. Tu devrais vérifier que session_start() est bien exécuté quand on respasse sur la page française.
Pour vérifier cela, il te suffit de placer juste avant le $TBS->Show() une variable de debug :
  $debug = (isset($heure1)) ? 'ok': 'pas_ok' ;
Puis tu places un champ dans le template pour afficher cette variable.

Je te suggère aussi de faire un print_r($lang) avant le Show() pour vérifier que cette variable est bien crée et qu'elle contient bien ce que tu attends.
By: TiTi
Date: 2006-03-17
Time: 21:46

Re: Merge PHP global variables 1 fois sur 2

Bon mon collègue viens de trouver la solution.... et c'est franchement ridicule lol

il a simplement renommé $langue en $p_langue partout où on s'en servait !

y'a de koi se tirer une balle mdr
s'agit t'il d'une variable réservée ou un truc du genre ? il me semble pas...

et vous savez le pire : l'erreur nous est déja arrivée lol
en fait avec le précédent système de template on avait le même soucis, et c'était lui qui avais trouvé... moi j'ai pas tilté ... mais lui y'a pensé assez tôt.

donc le prblm ne viendrait pas du template mais de php

Merci à toit Skrol29 pour ton aide !

Et vive TBS
By: oxman
Date: 2006-04-05
Time: 10:53

Re: Merge PHP global variables 1 fois sur 2

A noter que moi aussi j'ai découvert TBS grâce à http://cyberzoide.developpez.com/php4/template/

Il faudrait peut-être demander une mise à jour des données concernant TBS ?