[Résolu] Utilisation de {include} dans un gabarit

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
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.f...nclude.tpl
#1
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.f...nclude.tpl
#2
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
J-C Etiemble v 2.2.xx
#2
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
J-C Etiemble v 2.2.xx
#3
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 Sad


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.f...nclude.tpl
#3
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 Sad


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.f...nclude.tpl
#4
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 ?
#4
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 ?
#5
YEAAAH ça marche Cool

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 Smile


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...)
#5
YEAAAH ça marche Cool

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 Smile


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...)
#6
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 Wink

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..
#6
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 Wink

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..
#7
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
J-C Etiemble v 2.2.xx
#7
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
J-C Etiemble v 2.2.xx
#8
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.
#8
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.
#9
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=SmartyFr...s#basics-1
http://www.smarty.net/quick_install
http://www.smarty.net/docs/en/installing....basic.tpl
J-C Etiemble v 2.2.xx
#9
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=SmartyFr...s#basics-1
http://www.smarty.net/quick_install
http://www.smarty.net/docs/en/installing....basic.tpl
J-C Etiemble v 2.2.xx
#10
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 Smile
#10
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 Smile
#11
Petit addon : cette fonctionnalité n'est présente que depuis CmsMadeSimple 1.11.x (du fait de la nouvelle version Smarty3)
#11
Petit addon : cette fonctionnalité n'est présente que depuis CmsMadeSimple 1.11.x (du fait de la nouvelle version Smarty3)


Atteindre :


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