Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > Smarty
Smarty Forum d'entraide sur le moteur de templates Smarty. Avant de poster -> FAQ Smarty et Cours Smarty
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2007, 17h13   #1
Invité de passage
 
Inscription : mai 2002
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 13
Points : 0
Points : 0
Par défaut Pseudo Frames PHP

Bonjour,

Voici un post que j'ai créé sur le forum de smarty, mais toujours pas de réponse au bout d'une semaine. Je m'en remet donc à vos lumières :

Je viens de me mettre à smarty très recemment et me voilà déjà confronté à un problème. J'essaye de réaliser un site utilisant des pseudos frames php et je pense que la méthode que j'utilise n'est pas la bonne. Donc voici mon code source :

index.tpl:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<body>
      <div id="entete">
         {include file='entete.tpl'}
      </div>
 
      <div id="menu">
         {include file='menu.tpl'}
      </div>
 
      <div id="contenu">
         {include_php file="$page"}
      </div>
 
      <div id="pied">
         {include file='pied.tpl'}
      </div>
   </body>
index.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
/*Récupération de la page demandée */
$cat  = isset($_GET['cat']) ? $_GET['cat'] .'/' : 0 ;
$page = isset($_GET['page']) ? $_GET['page'] : 0 ;
 
if(!empty($_GET['page']) && is_file($cat. basename($_GET['page'].'.php'))) {
   $page = $cat. basename($_GET['page'].'.php') ;
}
else {
   $page = 'news.php';
}
 
$smarty = new Smarty() ;
$smarty->assign("page",$page) ;
$smarty->display('index.tpl');
Pour résumer, lorsqu'on arrive sur l'index.php le script définit la page à afficher, l'assigne a une variable smarty, et grace à cette variable index.tpl sait quelle page inclure. Cette méthode à l'air de fonctionner mais dans la documentation smarty on peu lire pour {include.php}:
Quote:
include_php} est presque obsolète dans Smarty. Vous pouvez obtenir des résultats équivalents en utilisant les fonctions utilisateur.


Donc je pense qu'il existe une meilleure façon que la mienne pour obtenir le même résultat. Mais je ne vois pas du tout comment faire.
Quelqu'un pourrait-il m'expliquer de façon détaillée la meilleure méthode pour réaliser un site en pseudo frame php ?

Merci beaucoup !
Lolo19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2007, 18h37   #2
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Salut,

Excepté que tu devrais vérifier le contenu de $cat et $page pour éviter qu'on ne puisse rentrer n'importe quoi, ta façon de faire ne me parait pas horrible.

Quelque chose qui respecte un peu mieux la séparation métier/template serait d'utiliser un simple template comme page à inclure : pourquoi as-tu besoin d'une page PHP ?
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2007, 01h13   #3
Invité de passage
 
Inscription : mai 2002
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 13
Points : 0
Points : 0
Bonjour,

Tout d'abord merci pour votre réponse.

En fait il me faut une page php ca j'ai besoin d'inclure du contenu dynamique dans ce div. Effectivement au début j'étais parti pour inclure uniquement des template mais je n'avais pas réussis.

En fait je me pose une question, si j'utilise ce code :
Code :
1
2
3
4
 
<div id="contenu">
   {include file='$page'} 
</div>
Si $page désigne le nom d'un template (ex: maPage.tpl) , est-ce que la page associée à ce template (maPage.php) sera également appelée lors de l'inlude ?
Lolo19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 07h15   #4
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Bonjour,

La réponse à ta dernière question est non puisque le template n'est en lui-même associé à aucun fichier, mais bien appelé par un script php.

Toute les données doivent être dans ce fichier PHP qui implémente SMARTY. Ces données seront également utilisables dans le template inclu.

Ici un exemple d'utilisation: http://eric-pommereau.developpez.com...e=page_4#LIV-D

La technique des pseudo-frames (appel de plusieurs scripts php dans un script principal) n'est pas vraiment opportune quand tu utilises SMARTY (un seul script est responsable de la production de données).

En revanche l'utilisation de la fonction "include" de SMARTY que tu suggères est à mon avis un bon moyen de faire ce que tu veux.

@++
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h32.


 
 
 
 
Partenaires

Hébergement Web