View previous topic :: View next topic |
Author |
Message |
Equinoxe5 Smarty Rookie
Joined: 08 May 2008 Posts: 14
|
Posted: Sat Nov 06, 2010 3:18 pm Post subject: [Résolu] Problème récupération variable d'une page à l'autre |
|
|
Bonjour,
Je vais essayer d'être clair et précis mais ça va pas être facile.
J'ai récupéré une galerie de photos qui fonctionne avec Smarty et des jeux de templates.
Je l'ai integré sans souci à mon site sauf pour une chose.
Sur ce site, je peux choisir plusieurs couleurs dominantes en changeant de feuille de style.
Le nom de la feuille de style choisie (La couleur donc) est stockée dans un cookie.
La navigation sur le site se fait par un menu déroulant dont un lien "photos" qui correspond donc à ma galerie.
Voilà, le décor est planté, maintenant passons au problème
La galerie commence par une page index.php qui appelle une page InterPhoto.Functions.php ou sont regroupées toutes les fonctions.
Dans ce fichier, j'ai créé une fonction comme ceci:
Code: | function GetColorSite()
{
if(!isset($_COOKIE['colorsite'])){
return css_default;
}else{
return $_COOKIE['colorsite'];
}
} |
Je précise que le cookie est valide puisque tout le reste du site a la bonne couleur.
A la fin du fichier index.php j'ai mis ceci:
Code: | $colorsite=GetColorSite();
$smarty->assign('colorsite',$colorsite); |
Au début de mon fichier index.tpl, j'ai ceci:
Code: | {include file="header.tpl" colorsite=$colorsite} |
Maintenant, si j'appelle ma galerie par mon menu déroulant, donc par un lien classique externe à la galerie, ça fonctionne.
Mais si je l'appelle par ses propres boutons internes (le bouton HOME appelle la même page index.php de cette galerie), ça ne fonctionne plus.
ALors j'ai testé des tas de choses et j'ai trouvé ceci. Le bouton HOME de la galerie appelle ce lien:
Code: | <a href="{'index.php'|GetUrl}">{$lan_home}</a></li> |
Si je le remplace par:
Code: | <a href="{'index.php'}">{$lan_home}</a></li> |
ça fonctionne.
Tous les tests en long et en large que j'ai fait me prouvent bien que c'est la fonction GetUrl qui pose problème.
Souci, je ne sais pas comment repédier à ce souci.
Voici la fonction complète:
Code: | function GetUrl($PageName, $Key ='', $Value ='', $PageNum='', $Querystring='') {
global $mainsettings;
if ($PageName == './') $PageName = 'index.php';
$sReturn = '';
if ($mainsettings['siteRewrite']) {
$PageName = substr($PageName, 0, -4) .Iif($Value, '-'.$Value, '').'.html';
if ($PageNum != '') {
$sReturn = 'p='.$PageNum;
}
} else {
$sReturn = ($Value != '' && $Value != '0' ? $Key.'='.$Value : '');
if ($PageNum != '') {
if ($sReturn != '') $sReturn .= '&';
$sReturn .= 'p='.$PageNum;
}
}
if ($Querystring != '' && substr($Querystring, 0, 1) != '#') {
if ($sReturn != '') $sReturn .= '&';
$sReturn .= $Querystring;
}
if ($sReturn != '') $sReturn = '?'.$sReturn;
if ($Querystring != '' && substr($Querystring, 0, 1) == '#') $sReturn .= $Querystring;
return BASEURL.$PageName.$sReturn;
} |
Si quelqu'un pouvait me dire quoi rajouter / modifier ? et surtout pourquoi ça agit comme ça...
Merci d'avance et désolé si j'ai été long.
Last edited by Equinoxe5 on Mon Nov 15, 2010 1:05 pm; edited 1 time in total |
|
Back to top |
|
Gowser Smarty Pro
Joined: 19 Feb 2008 Posts: 104 Location: Nantes (France)
|
Posted: Sat Nov 06, 2010 4:44 pm Post subject: |
|
|
Bonjour,
Pourrais tu me fournir quelques réponses et contenus de tes variables:
- Que contient ta constante BASEURL ?
- Que te génère ton lien {'index.php'|GetUrl} ?
Merci |
|
Back to top |
|
Equinoxe5 Smarty Rookie
Joined: 08 May 2008 Posts: 14
|
Posted: Sat Nov 06, 2010 10:36 pm Post subject: |
|
|
Bonsoir,
Si je fais un echo de BASEURL, ça me donne
Code: | http://localhost/new_asmb/interphoto |
Quant au lien, un echo de {'index.php'|GetUrl} donne
Code: | http://localhost/new_asmb/interphoto/index.php |
Merci |
|
Back to top |
|
Gowser Smarty Pro
Joined: 19 Feb 2008 Posts: 104 Location: Nantes (France)
|
Posted: Mon Nov 08, 2010 6:08 pm Post subject: |
|
|
Humm personnellement, je vois pas le problème ici. Tu pourrais faire un debug en smarty pour voir tes variables ?
++ |
|
Back to top |
|
Equinoxe5 Smarty Rookie
Joined: 08 May 2008 Posts: 14
|
Posted: Tue Nov 09, 2010 1:33 pm Post subject: |
|
|
Je ne suis pas très familier de {debug}.
Il y a des options ? parce que debug seul me liste bien mes variables oui mais à aucun moment je ne vois quand je perds la valeur de ma variable colorsite.
Y'a moyen de tracer ligne par ligne ? |
|
Back to top |
|
Gowser Smarty Pro
Joined: 19 Feb 2008 Posts: 104 Location: Nantes (France)
|
Posted: Mon Nov 15, 2010 8:14 am Post subject: |
|
|
Je reviens sur ce problème :
Pour moi, j'ai pas l'impression que cela vient de tout ca traitement mais plutot de ton cookie.
As tu vérifier le path de ton cookie ? |
|
Back to top |
|
Equinoxe5 Smarty Rookie
Joined: 08 May 2008 Posts: 14
|
Posted: Mon Nov 15, 2010 9:36 am Post subject: [Résolu] |
|
|
Bonjour,
Tu as parfaitement raison, il s'agissait effectivement d'un problème de path dans le cookie.
Il m'a suffit de rajouter le "/" dans ma commande setcookie
Code: | setcookie("colorsite","$colorsite",time()+$expirecolor,"/"); |
Merci beaucoup pour votre aide à tous
Last edited by Equinoxe5 on Mon Nov 15, 2010 1:04 pm; edited 1 time in total |
|
Back to top |
|
Gowser Smarty Pro
Joined: 19 Feb 2008 Posts: 104 Location: Nantes (France)
|
Posted: Mon Nov 15, 2010 11:58 am Post subject: |
|
|
Je m'en doutais, ca m'etais déjà arrivé mais comme tu avais dit plus haut :
Quote: |
Je précise que le cookie est valide puisque tout le reste du site a la bonne couleur.
|
Je cherchais l'erreur autre part
Tu pourrais mettre [résolu] dans ton titre ?
Merci et ++ |
|
Back to top |
|
|