Bonjour
Je veux des tests de création de page avec le système de template.
Pouvez vous m'indiquer le moteur de template utilisé par PWG et le nom du fichier ?
Merci d'avance
Cordialement
Dernière modification par marcophilie56 (2007-12-05 18:59:15)
Hors ligne
le moteur est extrait de phpBB, avec une ou deux modifs en plus. Le fichier s'appelle template.php (étonnant, non?).
En bonus, je l'avais dans mon historique: http://phpcodeur.net/articles/php/templates
Hors ligne
Bonjour
J'ai essayé justement de suivre le tutoriel que tu indiques mais je pense que je dois faire une erreur car je n'arrive pas à passer les donner du php vers le tpl :
Voici mon php nommé receveur.php:
<?php
include('template.php');
$connect = mysql_connect('localhost', 'root', '');
$result = mysql_query("SELECT Source, Date, Evenement, Commune FROM caran WHERE Commune like 'ALLAIRE' and Type = 'Personnel' ORDER BY num_ordre");
echo mysql_num_rows($result);
// on créé une nouvelle instance de la classe Template
// et on indique en argument le chemin vers les modèles
$template = new Template('./');
// modèle à utiliser auquel on adjoint un nom arbitraire
$template->set_filenames(array(
'body' => 'receveur.tpl'
));
// Assignation des variables
$template->assign_vars( array(
'NB_USERS' => mysql_num_rows($result)
));
//
// Assignation des variables dans le block 'user'
//
while( $row = mysql_fetch_array($result) )
{
$template->assign_block_vars('user', array(
'SOURCE' => $row['Source'],
'DATE' => $row['Date'],
'EVENEMENT' => $row['Evenement'],
'COMMUNE' => $row['Commune']
));
}
// Affichage des données
$template->pparse('body');
?>
Voici mon fichier tpl :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<table width="95%" border="1" align="center">
<tr>
<td colspan="2"> Il y a {NB_USER} membres </td> </tr>
<tr>
<td width="5%"> <div align="center"><font face="Comic Sans MS" size="2">Source</font></div></td>
<td width="10%"> <div align="center"><font face="Comic Sans MS" size="2">Date</font></div></td>
<td width="10%"><div align="center"><font size="2" face="Comic Sans MS">Courrier</font></div></td><td width="53%"> <div align="center"><font face="Comic Sans MS" size="2">Evénement</font></div></td> </tr>
<!-- BEGIN user -->
<tr>
<td width="5%"> <div align="center"><font face="Comic Sans MS" size="2">{Source}</font></div></td>
<td width="10%"><div align="center"><font face="Comic Sans MS" size="2">{Date}</font></div></td>
<td width="10%"><div align="center"><font size="2" face="Comic Sans MS">{Commune}</font></div></td>
<td width="53%"> <font face="Comic Sans MS" size="2">{Evenement}</font></td></tr>
<!-- END user -->
</table>
</body>
Remarque l'écho mit dans le fichier php affiche bien le nombre de lignes exact de la requête.
Merci de ton aide
Cordialement
Hors ligne
Ton template est incorrect...
Voila les modifs:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<table width="95%" border="1" align="center">
<tr>
<td colspan="2"> Il y a {NB_USERS} membres </td> </tr>
<tr>
<td width="5%"> <div align="center"><font face="Comic Sans MS" size="2">Source</font></div></td>
<td width="10%"> <div align="center"><font face="Comic Sans MS" size="2">Date</font></div></td>
<td width="10%"><div align="center"><font size="2" face="Comic Sans MS">Courrier</font></div></td><td width="53%"> <div align="center"><font face="Comic Sans MS" size="2">Evénement</font></div></td> </tr>
<!-- BEGIN user -->
<tr>
<td width="5%"> <div align="center"><font face="Comic Sans MS" size="2">{user.SOURCE}</font></div></td>
<td width="10%"><div align="center"><font face="Comic Sans MS" size="2">{user.DATE}</font></div></td>
<td width="10%"><div align="center"><font size="2" face="Comic Sans MS">{user.COMMUNE}</font></div></td>
<td width="53%"> <font face="Comic Sans MS" size="2">{user.EVENEMENT}</font></td></tr>
<!-- END user -->
</table>
</body>
Dernière modification par P@t (2007-11-25 19:12:02)
Hors ligne
Bonsoir
Merci beaucoup.
Mon idée est maintenant d'intégrer cette page dans la description d'une catégorie sachant que j'ai besoin de récupérer des paramètres de cette catégorie pour générer la page.
Si vous avez des idées, je suis preneur.
Cordialement
Hors ligne
Bonjour
Voici ce que je souhaite : http://marcophilie56.free.fr/galerie/in … egory/8782
remplacer le texte html de la description de la catégorie par une requête liée aux éléments de la catégorie ici lj'ai besoin de récupérer le paramètre nom de la commune ici Allaire et le nom de la catégorie ici Chefs d'établissements.
Cordialment
Hors ligne
Bonjour
C'est fait tu es également conseiller
Cordialement
Hors ligne
Voila, je pense etre arrivé à quelque chose de pas mal...
Tout d'abord, récupère la dernière version du fichier include/section_init.inc.php ici
Ensuite, tu crées un nouveau plugin dans lequel tu rentres le code suivant:
function get_special_description($desc) { global $page; if (isset($page['category'])) { preg_match_all("#\<\!-- (.*?)\: (.*?) --\>#is", $desc, $matches); foreach ($matches[1] as $key => $param) { $params[$param] = $matches[2][$key]; } include(dirname(__FILE__) . '/monfichier.php'); } } add_event_handler('render_category_description', 'get_special_description');
Tu places le fichier php à appeler dans le dossier du plugin (que j'ai appelé ici monfichier.php)
Tes descriptions devront ensuite se présenter ainsi:
<!-- commune: nom de la commune -->
<!-- categorie: nom de la catégorie -->
<!-- parametre3: autre parametre -->
Tu pourras alors utiliser dans ton fichiers les paramètres suivants:
$params['commune'] ( = 'nom de la commune' )
$params['categorie'] ( = 'nom de la catégorie' )
$params['parametre3'] ( = 'autre parametre' )
Tu peux rentrer autant de paramètres que tu veux de la meme manière...
Ton fichier php devra renvoyer la chaine de caractère que tu souhaites afficher comme description.
Dans ton exemple ci-dessus, ca sera:
return $template->parse('body', true);
Dernière modification par P@t (2007-11-26 17:53:56)
Hors ligne
Bonjour
J'ai réalisé la mise à jour en local.
J'arrive à m'identifier puis sur la page d'accueil mais lorsque je clique sur n'importe quelle catégorie , j'ai le message d'erreur suivant : Template->make_filename(): Error - file .//receveur.tpl does not exist
Merci de m'indiquer quelle est le bugue sûrement le path ?
Cordialement
Dernière modification par marcophilie56 (2007-11-26 19:02:54)
Hors ligne
Merci pour la correction mais je n'ai pas compris la suite c'est à dire comment pour certaines catégories afficher mon template en remplacement de la description de la catégorie.
J'attends les explications car je crois que ce système va résoudre une grande partie de mes recherches
Cordialement
Hors ligne
Et c'est la que j'avais oublié une petite bricole dans le code....
Voila la correction:
function get_special_description($desc)
{
global $page;
if (isset($page['category'])) {
preg_match_all("#\<\!-- (.*?)\: (.*?) --\>#is", $desc, $matches);
foreach ($matches[1] as $key => $param) {
$params[$param] = $matches[2][$key];
}
if (isset($params)) include(dirname(__FILE__) . '/monfichier.php');
}
}
add_event_handler('render_category_description', 'get_special_description');
Ainsi, ton fichier sera inclu uniquement s'il trouve des paramètres dans la description...
Dernière modification par P@t (2007-11-26 20:27:03)
Hors ligne