Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

contenu d'une page en fonction d'une variable
#1

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)
Répondre
#2

Suivant ce post : http://www.cmsmadesimple.fr/forum/viewto...638#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;
Répondre
#3

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 ...
Répondre
#4

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é)
Répondre
#5

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

aucune idée ?
Répondre
#6

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

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.

www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#8

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.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)