[Résolu] Utilisation de {include} dans un gabarit -
bess - 20/08/2012
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.11.1
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Salut tout le monde
Quelqu'un a t il déjà utilisé la notion d'include de template ?
l'utilisation est pour un module de pouvoir faire
Code :
echo $this->ProcessTemplate('templatePere.tpl');
et à l'intérieur de templatePere.tpl de faire
Code :
[code lambda]
{include file='template_enfant1.tpl'}
[code lambda]
{include file='template_enfant2.tpl'}
[code lambda]
la doc smarty à ce sujet :
http://www.smarty.net/docs/en/language.function.include.tpl
[Résolu] Utilisation de {include} dans un gabarit -
jce76350 - 20/08/2012
j'utilise dans une gestion d'adhérents
un fichier gerer_fiche_adht.tpl (lié à gerer_fiche_adht.php)
...
{if $info_fichiermission_adht == '1'}{include file='adherent/consulter_info_fichiermission_adht.tpl'}{/if}
// si le gus à des fichiers on affiche la liste
pour afficher une liste des fichiers avec un php = consulter_info_fichiermission_adht.php
[Résolu] Utilisation de {include} dans un gabarit -
bess - 22/08/2012
salut jce, je te remercies déjà de ta réponse mais j'ai du louper un truc.
J'ai un module (DownCnt pour ne pas le nommer) avec des templates dans /templates
Depuis le template general.tpl je veux inclure enfant.tpl
J'ai tenté :
{include file='enfant.tpl'}
{include file='/enfant.tpl'}
{include file='templates/enfant.tpl'}
{include file='/templates/enfant.tpl'}
{include file='modules/DownCnt/templates/enfant.tpl'}
{include file='/modules/DownCnt/templates/enfant.tpl'}
{include file='../modules/DownCnt/templates/enfant.tpl'}
A chaque fois smarty me répond : va te faire foutre, je n'inclurais pas ton fichier, de toute façon il n'existe pas
Tiens d'ailleurs l'url de Smarty dans mon premier post pointe vers la doc V2.
Voici la bonne :
http://www.smarty.net/docs/en/language.function.include.tpl
[Résolu] Utilisation de {include} dans un gabarit -
Jean le Chauve - 22/08/2012
En passant, Smarty 3 t'offre l'héritage :
http://www.smarty.net/inheritance
As-tu essayé : {include './template-in-same-directory.tpl'} avec un seul point ?
[Résolu] Utilisation de {include} dans un gabarit -
bess - 22/08/2012
YEAAAH ça marche
La solution complète est issue de cette documentation :
http://www.smarty.net/docs/en/api.add.template.dir.tpl
En gros on va ajouter le répertoire "/template" dans la conf Smarty comme étant un répertoire qui contiendra des templates qui seront "appelables" durant le traitement.
donc dans la classe PHP de mon module :
Code :
//A placer avant l'appel à ProcessTemplate
$smarty->addTemplateDir(dirname(__FILE__).'/templates');
Dans arborescence de mon module j'ai deux templates : ./templates/general.tpl et ./templates/enfant.tpl
Dans general.tpl je peux faire appel à tout moment à l'autre template avec ce code.
Code :
{include file='enfant.tpl'}
Note #1 : les variables passées à Smarty sont incluent de facto à enfant.tpl
Note #2 : si votre template enfant ne contiens pas vraiment de code dynamique vous pouvez jongler avec les options de Smarty pour mettre en cache les données issues de enfant.tpl
Note #3 : un cas d'utilisation est la possibilité de factoriser du code d'un onglet entier du module qui sera rechargeable par Ajax. Un seul template contient donc le code pour le premier chargement de la page est pour le chargement par ajax. Moins de code = moins d'erreur
Je vais me renseigner sur le forum anglais voir si Cg n'a pas des remarques à faires sur mon code (genre "han mais non faut pas faire ça...)
[Résolu] Utilisation de {include} dans un gabarit -
bess - 22/08/2012
je n'avais pas vu ton commentaire Jean Le Chauve.
Je ne penses pas que l'héritage puisse être utilisé dans mon cas (utilisation d'ajax et tout et tout) mais je garde l'info sous le coude
Oui j'avais testé "./enfant.tpl" sans succès et en réalité c'est tout a fait normal qu'il ne fonctionne pas:
Citation :die(print_r($smarty->getTemplateDir()));
Dans mon code php, cette ligne m'a retourné un unique répertoire contenu dans /admin/.../template : bien loin de mon module. Donc j'aurais du hypothétiquement faire un {include file='../../../modules/DownCnt/templates/enfant.tpl'} ...
l'enfer..
[Résolu] Utilisation de {include} dans un gabarit -
jce76350 - 22/08/2012
Citation :En gros on va ajouter le répertoire "/template" dans la conf Smarty comme étant un répertoire qui contiendra des templates qui seront "appelables" durant le traitement.
ha oui mais c'est la BAba et c'est bien indiqué dans la doc
j'ai un fichier include.php ou je mets en particulier
Code :
/**** Les chemins des répertoires pour SMARTY */
define('TEMPLATES_LOCATION', join_path(ROOT_DIR_GESTASSO,'templates' ) ); // répertoire Fichiers des templates
define('TMP_LOCATION', join_path(ROOT_DIR_GESTASSO,'temp')); // répertoire des Fichiers temporaires
define('TMP_TEMPLATES_C_LOCATION', join_path(ROOT_DIR_GESTASSO,'temp','templates_c')); // répertoire des Fichiers temporaires de templates
/**** Les chemins et variables pour SMARTY */
//Il doit s'agir du chemin complet du répertoire où se trouvent les fichiers classes de Smarty., le chemin doit se terminer par un slash.
define('SMARTY_DIR', join_path(ROOT_LIB ,'smarty'). DIRECTORY_SEPARATOR );
require (SMARTY_DIR.'Smarty.class.php'); // la classe
$tpl = new Smarty; //instance de Smarty pour scripts PHP
$tpl->setCompileDir (TMP_TEMPLATES_C_LOCATION) ;// répertoire par défaut de compilation = templates_c // Smarty version 3.x
$tpl->setTemplateDir (TEMPLATES_LOCATION); // répertoire par défaut des templates = templates // Smarty version 3.x
[Résolu] Utilisation de {include} dans un gabarit -
bess - 22/08/2012
nié ? :/
Pourquoi un tel code ? Que tu précises un/deux répertoires de templates en plus, je le conçois... mais le répertoire de compilation ? et le répertoire de tmp ? ils te servent à quoi ?
>ha oui mais c'est la BAba et c'est bien indiqué dans la doc
De tête tu te souviens de laquelle ? rien trouvé dans le pdf du développeur.
[Résolu] Utilisation de {include} dans un gabarit -
jce76350 - 22/08/2012
Citation :Pourquoi un tel code ? Que tu précises un/deux répertoires de templates en plus, je le conçois... mais le répertoire de compilation ? et le répertoire de tmp ? ils te servent à quoi ?
attention mon application ne dépend pas de CMSms et est autonome, donc j'ai besoin de tout définir
>ha oui mais c'est la BAba et c'est bien indiqué dans la doc
>De tête tu te souviens de laquelle ? rien trouvé dans le pdf du développeur.
Tu as
http://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions#basics-1
http://www.smarty.net/quick_install
http://www.smarty.net/docs/en/installing.smarty.basic.tpl
[Résolu] Utilisation de {include} dans un gabarit -
bess - 22/08/2012
oui donc c'est bien ce qui me semblait, il n'y a rien de définit côté cmsms...
bon ben au moins les prochains à se poser la question sauront
[Résolu] Utilisation de {include} dans un gabarit -
bess - 08/09/2012
Petit addon : cette fonctionnalité n'est présente que depuis CmsMadeSimple 1.11.x (du fait de la nouvelle version Smarty3)