Messages : 602
Sujets : 81
Inscription : Jan 2011
Réputation :
0
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.4
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Juste un petit truc que je viens de découvrir car j'avais un problème.
Pour remplacer la méthode _compile_source avec smarty 3, dans le wiki il est mentionné d'utiliser :
Code : [== Indéfini ==]
$smarty = cmsms()->GetSmarty();
$smarty_data = "{menu}";
echo $smarty->display('string:'.$smarty_data) ;
Par contre pour utiliser évaluer la balise smarty et ne pas l'afficher de suite
il faut utiliser $smarty->fetch('string:'.$smarty_data):
pour mon problème, une carte avec mapping ça m'a donné ceci:
Code : [== Indéfini ==]
$smarty = &cmsms()->GetSmarty();
foreach ($region as $val=>$coo) {
$val = htmlentities($val, ENT_QUOTES);
$smarty = &cmsms()->GetSmarty();
$smarty_data = "{cms_selflink href='region' text='$val' urlparam='?l=$val'}";
echo '<area alt="'.html_entity_decode($val).'" href="'.$smarty->fetch('string:'.html_entity_decode($smarty_data)).'" coords="'.$coo.'" shape="poly">';
}
Pt'être que ça peut servir à d'autres...
Messages : 10,864
Sujets : 164
Inscription : Dec 2008
Réputation :
0
>Par contre pour utiliser évaluer la balise smarty et ne pas l'afficher de suite
heuu j'ai pas compris ? :/
Messages : 602
Sujets : 81
Inscription : Jan 2011
Réputation :
0
06/02/2013, 15:43:50
(Modification du message : 06/02/2013, 16:04:13 par snatch1974.)
Si on utilise $smarty->display() la balise smarty s'affiche automatiquement dû au "display" et dans mon cas exemple, ça affiche le lien en ltéral sur le site mais en dehors du "href" qui lui se retrouve vide.
Avec le $smarty->fetch c'est comme si la balise smarty devenait une variable...
je sais pas si c'est trés clair...
un autre exemple:
Code : [== Indéfini ==]
$smarty = &cmsms()->GetSmarty();
$smarty_data = "{cms_selflink page='region' text='$val' urlparam='?l=$val'}";
echo '<h4>'.$smarty->display('string:'.html_entity_decode($smarty_data)).'</h4>';
donne ça en frontend:
Code : [== Indéfini ==]
<a title="par region" href="http://www.nextride.eu/region.html?l=Alsace">Alsace</a>
<h4></h4>
alors qu'avec fetch:
Code : [== Indéfini ==]
$smarty = &cmsms()->GetSmarty();
$smarty_data = "{cms_selflink page='region' text='$val' urlparam='?l=$val'}";
echo '<h4>'.$smarty->fetch('string:'.html_entity_decode($smarty_data)).'</h4>';
donne ça en frontend:
Code : [== Indéfini ==]
<h4><a title="par region" href="http://www.nextride.eu/region.html?l=Alsace">Alsace</a></h4>
Messages : 10,864
Sujets : 164
Inscription : Dec 2008
Réputation :
0
ok j'ai compris ... merci de l'info
Messages : 602
Sujets : 81
Inscription : Jan 2011
Réputation :
0
De rien, si ça peut éviter à d'autres de galérer comme je l'ai fait pour comprendre ce qui n'allait pas au départ...
Messages : 5,034
Sujets : 63
Inscription : Oct 2009
Réputation :
0
s'cusez moi messieurs, mais moi je ne comprends pas vite.
Dans l'exemple que tu donnes, avec display, le href n'est pas vide?
La différence que je vois est la balise H4 qui se trouve après le display, mais la balise a est bien générée dans la 2 cas de la même manière?
Messages : 602
Sujets : 81
Inscription : Jan 2011
Réputation :
0
07/02/2013, 12:18:40
(Modification du message : 07/02/2013, 12:30:19 par snatch1974.)
non, dans le premier cas, la balise smarty ne génère que l'adresse d'une page (le href) alors que dans le second cas elle génère un lien complet vers une page (balise a).
donc, dans l'exemple 1
avec:
Code : [== Indéfini ==]
$smarty = &cmsms()->GetSmarty();
$smarty_data = "{cms_selflink href='region' text='$val' urlparam='?l=$val'}";
echo '<area alt="'.html_entity_decode($val).'" href="'.$smarty->display('string:'.html_entity_decode($smarty_data)).'" coords="'.$coo.'" shape="poly">';
on obtient en affichage par exemple:
Code : [== Indéfini ==]
http://www.nextride.eu/region.html?l=Rhône-Alpes
<area shape="poly" coords="419,304,424,305,433,303,438,297,445,297,451,302,454,294,454,282,467,283,472,290,480,289,488,289,494,281,500,288,505,288,503,281,511,276,524,276,525,288,531,292,534,301,527,308,543,323,543,334,527,344,519,348,512,345,511,349,515,354,515,358,510,359,492,375,493,379,494,382,490,381,490,389,496,391,495,398,481,393,475,393,471,396,461,396,452,396,446,398,442,395,437,391,429,383,432,375,442,363,448,349,445,349,437,343,434,345,426,345,427,337,423,331,417,327,416,321,416,318,419,313,415,309,415,305" href="" alt="Rhône-Alpes">
alors qu'avec fetch on obtient:
Code : [== Indéfini ==]
<area shape="poly" coords="419,304,424,305,433,303,438,297,445,297,451,302,454,294,454,282,467,283,472,290,480,289,488,289,494,281,500,288,505,288,503,281,511,276,524,276,525,288,531,292,534,301,527,308,543,323,543,334,527,344,519,348,512,345,511,349,515,354,515,358,510,359,492,375,493,379,494,382,490,381,490,389,496,391,495,398,481,393,475,393,471,396,461,396,452,396,446,398,442,395,437,391,429,383,432,375,442,363,448,349,445,349,437,343,434,345,426,345,427,337,423,331,417,327,416,321,416,318,419,313,415,309,415,305" href="http://www.nextride.eu/region.html?l=Rhône-Alpes" alt="Rhône-Alpes">
Messages : 5,034
Sujets : 63
Inscription : Oct 2009
Réputation :
0
je crois que j'ai compris, mais tes exemples ne sont pas clairs . Tu parles de display alors que tu as écris fetch dans le premier cas.
En tout cas merci, ça me servira un jour, c'est sûr.
Messages : 602
Sujets : 81
Inscription : Jan 2011
Réputation :
0
C'est vrai, j'ai corrigé... comme c'est un copier-coller de mon code d'origine utilisant fetch, j'ai oublié de le modifier après le collage! :p
Ca sert aussi pour mettre la balise smarty en variable du style:
Code : [== Indéfini ==]
$smarty = &cmsms()->GetSmarty();
$smarty_data = "{cms_selflink href='region' text='$val' urlparam='?l=$val'}";
$lien = $smarty->fetch('string:'.html_entity_decode($smarty_data));
et utiliser $lien plus loin et plusieurs fois par exemple.
ou, ça peut aider pour imbriquer des balises smarty par ex.
Code : [== Indéfini ==]
$smarty = &cmsms()->GetSmarty();
$smarty_img = "{CGSmartImage src=$file filter_resize='h,150' notag=1 noembed=1}";
$smarty_link = "{cms_selflink dir = 'next' image = '$smarty->fetch('string:'.$smarty_img)' text = 'Next'}";
echo $smarty->display('string:'.$smarty_link);
|