Bonjour
Avec votre assistance, j'ai mis en place un plugin personnel me permettant de renseigner le camp comment afin de fournir plusieurs informations pour une catégorie
1 - le champ comment est renseigné par les infos suivantes :
<!-- commune: ALLAIRE -->
<!-- categorie: Poste -->
2 - le fichier main.inc.php est bati
Plugin Name: PersonalPlugin
Version: 1.7
Description: Création de pages pour afficher la description d'une catégorie.
*/
function get_special_description($desc)
{
global $page, $template;
if (isset($page['category']['comment']) and $page['category']['comment'] == $desc)
{
preg_match_all("#\<\!-- (.*?)\: (.*?) --\>#is", $desc, $matches);
foreach ($matches[1] as $key => $param)
{
$params[$param] = $matches[2][$key];
}
if (isset($params))
{
if ($params['categorie'] == 'maire') include(dirname(__FILE__) . '/maire.php');
}
}
return $desc;
}
add_event_handler('render_category_description', 'get_special_description');
?>
3 - le fichier maire.php est écrit comme cela :
<?php
$result = mysql_query("SELECT num_commune, Civilite, nom, prenom, debut_mandat, fin_mandat FROM maires WHERE num_commune like '" . $params['commune'] . "' order by right(debut_mandat,4)");
// modèle à utiliser auquel on adjoint un nom arbitraire
$template->set_filenames(array(
'body' => dirname(__FILE__) . '/maire.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(
'CIVILITE' => $row['Civilite'],
'NOM' => $row['nom'],
'PRENOM' => $row['prenom'],
'DEBUT' => $row['debut_mandat'],
'FIN' => $row['fin_mandat']
));
}
// Affichage des données
$desc = $template->parse('body', true);
?>
4 - le fichier maire.tpl est écrit comme suit :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<table border="1" width="98%">
<tr>
<td > <div align="center"><font face="Comic Sans MS" size="2">Civilité</font></div></td>
<td > <div align="center"><font face="Comic Sans MS" size="2">Nom</font></div></td>
<td > <div align="center"><font face="Comic Sans MS" size="2">Prénom</font></div></td>
<td ><div align="center"><font size="2" face="Comic Sans MS">Début de mandat</font></div></td>
<td > <div align="center"><font face="Comic Sans MS" size="2">Fin de mandat</font></div></td>
</tr>
<!-- BEGIN user -->
<tr>
<td ><div align="center"><font face="Comic Sans MS" size="2">{user.CIVILITE}</font></div></td>
<td ><div align="center"><font face="Comic Sans MS" size="2">{user.NOM}</font></div></td>
<td ><div align="center"><font face="Comic Sans MS" size="2"> {user.PRENOM}</font></div></td>
<td ><div align="center"><font size="2" face="Comic Sans MS"> {user.DEBUT}</font></div></td>
<td > <div align="center"><font face="Comic Sans MS" size="2"> {user.FIN}</font></div></td>
</tr>
<!-- END user -->
</table>
</body>
Cette écriture n'est pas compatible avec Smarty.
Merci de votre aide pour adapter ce plugin.
Cordialement
Dernière modification par marcophilie56 (2009-02-25 18:28:14)
Hors ligne
Première piste :
1. Remplacer {user.CIVILITE} par {$user.CIVILITE} il me semble.
En tous les cas pour mon plugin perso j'ai du rajouter des $ devant toutes les variables dans les templates...
2. Après je sais pas si assign_block_vars et toujours valable... peut être le remplacer pas assign tout court.
Voili voila pour ce que je sais.
Hors ligne
Bonjour
Merci de cette première information, mais j'ai d'abord une erreur dans le fichier php à la ligne 11 qui me semble être celle-ci :
'NB_USERS' => mysql_num_rows($result)
Cordialement
Hors ligne
Je pense que cela vient du fait que assign_vars n'est plus valide en smarty mettre assign tout court à la place.
Et quand tu as des erreurs tu veux bien faire un copier coller de l'erreur comme ça je vois plus vite et mieux d'où ça vient ;)
A bientôt
Hors ligne
Bonjour
Merci de ta réponse voici le message d'erreur :
Fatal error: Smarty error: [in C:\Documents and Settings\DOMI\Mes documents\web\galerie\plugins\PersonalPlugin/maire.tpl line 16]: syntax error: unrecognized tag: user.CIVILITE (Smarty_Compiler.class.php, line 455) in C:\Documents and Settings\DOMI\Mes documents\web\galerie\include\smarty\libs\Smarty.class.php on line 1092
Voici le code du fichier maire.tpl avec des corrections
<?php
$result = mysql_query("SELECT num_commune, Civilite, nom, prenom, debut_mandat, fin_mandat FROM maires WHERE num_commune like '" . $params['commune'] . "' order by right(debut_mandat,4)");
// modèle à utiliser auquel on adjoint un nom arbitraire
$template->set_filenames(array(
'body' => dirname(__FILE__) . '/maire.tpl'
));
// Assignation des variables
$template->assign( array(
'NB_USERS' => mysql_num_rows($result)
));
//
// Assignation des variables dans le block 'user'
//
while( $row = mysql_fetch_array($result) )
{
$template->assign('user', array(
'CIVILITE' => $row['Civilite'],
'NOM' => $row['nom'],
'PRENOM' => $row['prenom'],
'DEBUT' => $row['debut_mandat'],
'FIN' => $row['fin_mandat']
));
}
// Affichage des données
$desc = $template->parse('body', true);
?>
A mon avis, l'erreur vient de la ligne $template->assign('user', array(
Merci d'avance
Cordialement
Hors ligne
Fatal error: Smarty error: [in C:\Documents and Settings\DOMI\Mes documents\web\galerie\plugins\PersonalPlugin/maire.tpl line 16]: syntax error: unrecognized tag: user.CIVILITE (Smarty_Compiler.class.php, line 455) in C:\Documents and Settings\DOMI\Mes documents\web\galerie\include\smarty\libs\Smarty.class.php on line 1092
Cela parle d'une erreur dans le fichier maire.tpl, tu as bien remplacer {user.CIVILITE} par {$user.CIVILITE} ?
Hors ligne
Bonjour
Je viens de tester aujourd'hui ta solution
J'ai seulement le dernier enregistrement affiché
La boucle ne doit pas fonctionner, j'ai teste avec $users sans résultat
Cordialement
Hors ligne
Ton fichier tpl doit changer:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<table border="1" width="98%">
<tr>
<td > <div align="center"><font face="Comic Sans MS" size="2">Civilité</font></div></td>
<td > <div align="center"><font face="Comic Sans MS" size="2">Nom</font></div></td>
<td > <div align="center"><font face="Comic Sans MS" size="2">Prénom</font></div></td>
<td ><div align="center"><font size="2" face="Comic Sans MS">Début de mandat</font></div></td>
<td > <div align="center"><font face="Comic Sans MS" size="2">Fin de mandat</font></div></td>
</tr>
{foreach from=$users item=user}
<tr>
<td ><div align="center"><font face="Comic Sans MS" size="2">{$user.CIVILITE}</font></div></td>
<td ><div align="center"><font face="Comic Sans MS" size="2">{$user.NOM}</font></div></td>
<td ><div align="center"><font face="Comic Sans MS" size="2"> {$user.PRENOM}</font></div></td>
<td ><div align="center"><font size="2" face="Comic Sans MS"> {$user.DEBUT}</font></div></td>
<td > <div align="center"><font face="Comic Sans MS" size="2"> {$user.FIN}</font></div></td>
</tr>
{/foreach}
</table>
</body>
Et dans ton fichier php, c'est append qu'il faut utiliser:
$template->append('users', array(
'CIVILITE' => $row['Civilite'],
'NOM' => $row['nom'],
'PRENOM' => $row['prenom'],
'DEBUT' => $row['debut_mandat'],
'FIN' => $row['fin_mandat']
));
Hors ligne
Bonjour
Merci beaucoup cela marche très bien
Je note le sujet comme résolu
Cordialement
Dernière modification par marcophilie56 (2009-02-25 18:58:07)
Hors ligne