Forum CMS Made Simple FR
contenu d'une page en fonction d'une variable - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Général (https://forum.cmsmadesimple.fr/forum-10.html)
+--- Sujet : contenu d'une page en fonction d'une variable (/thread-2815.html)



contenu d'une page en fonction d'une variable - gdl6128 - 27/06/2013

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: !1.11.x
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.2
#~ Installed Modules:
#~ CMSMailer: 5.2.1
#~ CMSPrinting: 1.0.3
#~ FileManager: 1.4.1
#~ MenuManager: 1.8.4
#~ MicroTiny: 1.2.3
#~ ModuleManager: 1.5.5
#~ News: 2.12.9
#~ Search: 1.7.7
#~ ThemeManager: 1.1.7
#~ CGExtensions: 1.31.2
#~ Captcha: 0.4.5
#~ FrontEndUsers: 1.21
#~ CustomContent: 1.8.3
#~ FormBuilder: 0.7.3
#~ FormBrowser: 0.4.2
#~ SelfRegistration: 1.7.2
#~ CGEcommerceBase: 1.3.11
#~ CGPaymentGatewayBase: 1.1
#~ CGSimpleSmarty: 1.5.2
#~ Orders: 1.13.3
#~ JQueryTools: 1.1.1
#~ Products: 2.18.4
#~ Cart: 1.8.4
#~ PaypalGateway: 2.3.9
#~ SuiviAbonnement: 1.0.0
#~ SuiviFacturation: 1.0.0
#~ SuiviClients: 1.0.0
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ output_compression:
#~ max_upload_size: 12000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.25
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ memory_limit: 128M
#~ max_execution_time: 30
#~ output_buffering: On
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 12M
#~ upload_max_filesize: 12M
#~ session_save_path: /tmp (1777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: cgi-fcgi
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.1.69
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour.

je souhaite modifier le contenu de certaines pages en fonction d'une variable. si je considère la balise utilisateur appelée dans la page, celle-ci doit renvoyer soit un texte soit le contenu d'une autre balise utilisateur.
j'ai essayé d'utiliser le code d'un post du forum (balise utilisateur dans une autre), mais sans succès.

voici le code :
// id de l'utilisateur enregistré connecté
global $gCms;
$db = cmsms()->GetDb();
$FEU = $gCms->GetModuleInstance('FrontEndUsers');
$userid = $FEU->LoggedInId();

$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$smarty = &$gCms->GetSmarty();

// état du service pour le client connecté
$sql2fo = xxxx
if ($etat_service = $db->getOne($sql2fo))
{
if (preg_match("#tableau-de-bord#",$url)) // page tableau de bord
{
switch($etat_service)
{
case 'INACTIF' :
$smarty_data = texte1
echo $smarty->display($smarty_data);
break;


case 'SUSPENDU' :
$smarty_data = texte2
echo $smarty->display($smarty_data);
break;


case 'RESILIE' :
$smarty_data = texte3
echo $smarty->display($smarty_data);
break;


case 'ECHEC_PAYPAL' :
$smarty_data = texte4
echo $smarty->display($smarty_data);
break;

default :
$smarty_data = "{users_data}"; // BALISE UTILISATEUR HABITUELLE DE LA PAGE
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );@ob_start();$smarty->_eval('?>' . $_compiled);
$final_compiled = @ob_get_contents();@ob_end_clean();echo $final_compiled;
}
}
}


l'erreur : Unable to load template file (textex ou {users_data})

pouvez-vous m'aider ? (j'ai essayé avec les méthodes pour smarty 2 et 3)


contenu d'une page en fonction d'une variable - Jean le Chauve - 27/06/2013

Suivant ce post : http://www.cmsmadesimple.fr/forum/viewtopic.php?pid=29638#p29638
Essaye en modifiant l'appel smarty : $smarty = cmsms()->GetSmarty();
ET en supprimant cette partie du code :
Code :
[== Indéfini ==]
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );@ob_start();$smarty->_eval('?>' . $_compiled);
                $final_compiled = @ob_get_contents();@ob_end_clean();echo $final_compiled;



contenu d'une page en fonction d'une variable - gdl6128 - 27/06/2013

Merci d'avoir répondu si vite.

avec le code :

// id de l'utilisateur enregistré connecté
global $gCms;
$db = cmsms()->GetDb();
$FEU = $gCms->GetModuleInstance('FrontEndUsers');
$userid = $FEU->LoggedInId();

$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$smarty = &$gCms->GetSmarty();

// état du service pour le client connecté
$sql2fo = xxxx
if ($etat_service = $db->getOne($sql2fo))
{
if (preg_match("#tableau-de-bord#",$url)) // page tableau de bord
{
switch($etat_service)
{
case 'INACTIF' :
$smarty_data = texte1
echo $smarty->display($smarty_data);
break;


case 'SUSPENDU' :
$smarty_data = texte2
echo $smarty->display($smarty_data);
break;


case 'RESILIE' :
$smarty_data = texte3
echo $smarty->display($smarty_data);
break;


case 'ECHEC_PAYPAL' :
$smarty_data = texte4
echo $smarty->display($smarty_data);
break;

default :
$smarty_data = "{users_data}"; // BALISE UTILISATEUR DE LA PAGE
/*$smarty->_compile_source('temporary template', $smarty_data, $_compiled );@ob_start();$smarty->_eval('?>' . $_compiled);
$final_compiled = @ob_get_contents();@ob_end_clean();echo $final_compiled;*/
}
}
}

j'obtiens :

Unable to load template file 'texte2'

j'avais écrit de cette manière au départ, puis changé en espérant que la version de smarty ne soit pas la bonne ...


contenu d'une page en fonction d'une variable - gdl6128 - 27/06/2013

ah dans le cas où $smarty_data = "{users_data}", j'obtiens une page, le gabarit est chargé (pas d'erreur), mais pas la balise utilisateur {users_data}, qui fonctionne. (si je remplace la balise que j'essaie de créer par celle-ci, son contenu est affiché)


contenu d'une page en fonction d'une variable - gdl6128 - 28/06/2013

le problème reste entier puisque j'ai omis la ligne echo $smarty->display($smarty_data);

aucune idée ?


contenu d'une page en fonction d'une variable - gdl6128 - 28/06/2013

tant pis, j'ai inséré le switch dans la balise utilisateur de chaque page. c'est moins classe, mais ça marche.


contenu d'une page en fonction d'une variable - heriquet - 28/06/2013

Ton code contient plusieurs erreurs, comme par exemple des omissions de ';' à la fin d'une ligne...

Code :
[== Indéfini ==]
$smarty_data = texte1
echo $smarty->display($smarty_data);

De plus, texte1 n'est ni une variable (manque le $ devant) ni une chaine de caractère puisque pas entouré d'apostrophes ou de guillemets.

=> t'as vraiment aucune erreur de compilation ou interprétation ?

Essaie déjà de corriger cela avant de tirer des conclusions.


contenu d'une page en fonction d'une variable - gdl6128 - 28/06/2013

ce ne sont pas des erreurs, j'ai écrit de cette manière ici pour ne pas écrire le texte. texte1 correspond en effet à quelque chose comme "echo 'bla bla' ";

aucune erreur de compilation c'est sûr, cmsms est explicite quand on enregistre une udt.