Annonce

  •  » Plugins
  •  » [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

#1 2009-02-17 13:18:02

marcophilie56
Membre
2007-01-22
175

[Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

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

#2 2009-02-19 10:13:30

Didou
Membre
2008-10-09
40

Re: [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

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

#3 2009-02-20 14:15:01

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

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

#4 2009-02-21 21:23:04

Didou
Membre
2008-10-09
40

Re: [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

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

#5 2009-02-22 09:55:47

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

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

#6 2009-02-23 17:32:39

Didou
Membre
2008-10-09
40

Re: [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

Code:

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

#7 2009-02-25 13:11:52

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

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

#8 2009-02-25 13:41:11

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

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']
));


P@t

Hors ligne

#9 2009-02-25 18:27:37

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

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

  •  » Plugins
  •  » [Résolu] [Piwigo 2.0] Mise à jour d'un plugin personnel

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact