Annonce

#16 2007-11-26 20:23:58

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Merci je vais regarder et je donne le résultat demain soir
Cordialement

Hors ligne

#17 2007-11-27 18:43:46

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Je reviens vers vous car je constate que
d'une part que lors qu'une description est déjà présente pour une catégorie celle-ci ne s'affiche plus et ce n'est pas le but du plugin,
d'autre part étant débutant en php je ne sais pas
    1 - comment récupérer les données du fichier main.inc.php dans le fichier php
    2 - comment ajouter la commande pour afficher la description générée par le fichier tpl
Merci de vos réponses
Cordialement

Hors ligne

#18 2007-11-27 20:58:32

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

Re: [Résolu] Moteur de template

1) Avec le code que je t'ai donné pour le plugin, les données (que tu rentres dans la description des catégories) sont contenues dans le tableau $params
Exemple: dans la description de ta catégorie, tu mets ceci:

<!-- commune: Allaire -->
<!-- categorie: Chefs d'établissements -->

On a alors:
$params['commune']  = "Allaire"
$params['categorie'] = "Chefs d'établissements"

Dans l'exemple ci-dessus, ca devrait donner ca, si j'ai bien compris ce que tu veux...

Code:

$result = mysql_query("SELECT Source, Date, Evenement, Commune  FROM caran  WHERE Commune='" . $params['commune'] . "' and Type='" . $params['categorie'] . "' ORDER BY num_ordre");

Je ne sais pas trop comment tu compte utiliser ces paramètres...
Il faudrait que tu m'en dises un peu plus.


2) Il suffit de rajouter à la fin de ton fichier php:
return $template->parse('body', true);
Cela remplacera la description par ton fichier template (parsé)
Si tu veux l'ajouter à ta description, il faudra mettre:
return $desc . $template->parse('body', true);


Pour ce qui est de la description qui ne s'affiche plus, essaye de mettre ca comme code dans ton plugin à la place:

function get_special_description($desc)
{
   global $page;
   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)) include(dirname(__FILE__) . '/monfichier.php');
   }
}

add_event_handler('render_category_description', 'get_special_description');

Si le php n'est pas ton ami, je veux bien t'aider un peu plus, mais dans ce cas, il faudrait me faire une description bien précise de ce que tu veux faire.

Dernière modification par P@t (2007-11-28 01:12:33)


P@t

Hors ligne

#19 2007-11-28 18:28:29

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
On progresse surtout moi d'ailleurs....
J'ai compris comment mettre les paramètres dans le champ description
le fichier php récupère bien ses paramètres
La fonction parse ne fonctionne pas (pas d'affichage du résultat) par contre quand j'utilise la fonction pparse le résultat de ma requête s'affiche avant le page_header.
Par ailleurs les catégories possédant déjà une description s'affiche en mode thumbnail mais pas dans la catégorie même.
Merci de tes recherches
Cordialement

Hors ligne

#20 2007-11-28 20:53:02

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

Re: [Résolu] Moteur de template

Ok... je vois le problème... c'est encore de ma faute....
Voila la correction du plugin:

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)) include(dirname(__FILE__) . '/monfichier.php');
   }
   return $desc;
}

add_event_handler('render_category_description', 'get_special_description');

A la fin de ton fichier php, à la place de return $template->parse('body', true); mets plutot:

$desc = $template->parse('body', true);

Et supprime la ligne suivante de ton fichier php:

$template = new Template('./');

Je pense qu'avec ca, tous les problèmes devraient etre résolus ;-)

Dernière modification par P@t (2007-11-28 20:58:38)


P@t

Hors ligne

#21 2007-11-29 06:53:56

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
C'est super ça marche parfaitement.
Une dernière question sur ce sujet : est-il possible d'appeler dans ce même plugin un autre fichier php
et quelle est la  syntaxe à utiliser en fonction du paramètre catégorie.
Merci de ta réponse
Cordialement

Dernière modification par marcophilie56 (2007-11-29 07:42:46)

Hors ligne

#22 2007-11-29 11:09:14

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

Re: [Résolu] Moteur de template

Oui, c'est possible!
Un truc du genre:

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'] == 'machin') include(dirname(__FILE__) . '/monfichier1.php');
         if ($params['categorie'] == 'truc') include(dirname(__FILE__) . '/monfichier2.php');
         if ($params['categorie'] == 'chose') include(dirname(__FILE__) . '/monfichier3.php');
      }

   }
   return $desc;
}

add_event_handler('render_category_description', 'get_special_description');


P@t

Hors ligne

#23 2007-11-30 10:08:18

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Bravo et merci pour tout.
J'ai cependant une dernière question à poser.
Dans le fichier php figure le logon et password de la base de la donnée, est-il possible de les masquer afin d'améliorer la sécurité ?
Cordialement

Hors ligne

#24 2007-11-30 11:50:46

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

Re: [Résolu] Moteur de template

Il n'ont pas besoin d'etre la...!
Dans ton premier exemple, pas mal de lignes sont en trop dans ton fichier...
La session avec la base de donnée a dejà étée ouverte par pwg...

Voila le meme fichier sans les lignes superflues:

<?php

$result = pwg_query("SELECT Source, Date, Evenement, Commune  FROM caran  WHERE Commune like 'ALLAIRE' and Type = 'Personnel'  ORDER BY num_ordre");

$template->set_filenames(array('body' => 'receveur.tpl'));

$template->assign_vars( array('NB_USERS' => mysql_num_rows($result)));

while( $row = mysql_fetch_array($result) )
  {
      $template->assign_block_vars('user', array(
           'SOURCE' => $row['Source'],
           'DATE'  => $row['Date'],
           'EVENEMENT' => $row['Evenement'],
           'COMMUNE'  => $row['Commune']

      ));
  }

$desc = $template->parse('body', true);

?>


P@t

Hors ligne

#25 2007-12-02 09:28:33

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Merci pour tout
Cordialement

Hors ligne

#26 2007-12-02 16:13:29

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
J'ai encore un souci que je n'arrive pas à régler
Avec la requête suivante :
SELECT br_bureau.Bureau, br_bureau.Boite, br_bureau.Lettre, br_bureau.dates, br_bureau.Periode, br_bureau.Indice,
bureaux_distributeurs.Observations, br_bureau.num_bureau
FROM br_bureau INNER JOIN bureaux_distributeurs ON (br_bureau.Bureau = bureaux_distributeurs.Bureau_distributeur)
AND (br_bureau.num_bureau = bureaux_distributeurs.num_periode)
WHERE Boite like '" . $params['commune'] . "'
GROUP BY br_bureau.Bureau, br_bureau.Boite, br_bureau.Lettre, br_bureau.dates, br_bureau.Periode, br_bureau.Indice,
bureaux_distributeurs.Observations, br_bureau.num_bureau ORDER BY br_bureau.num_bureau, br_bureau.Boite

Je voudrai obtenir le résultat suivant dans mon tpl
<!-- BEGIN PERIODE -->
Periode, Observations
<!-- BEGIN user -->
Boite, lettre, date
<!-- END user -->
<!-- END PERIODE -->

Comment dans mon php faire l'assignation des variables pour obtenir les 2 blocs imbriqués ?
Merci d'avance
Cordialement

Hors ligne

#27 2007-12-02 18:51:20

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

Re: [Résolu] Moteur de template

Bon, j'ai rien compris du tout à ta requete sql...  (t'es sur qu'elle est bonnes?)
Bref, pour les blocs imbriqués, un truc du genr (si j'ai bien compris):

$template->assign_block_vars('PERIODE', array(
           'PERIODE' => $row['Periode'],
           'DATE'  => $row['Date']));

$template->assign_block_vars('PERIODE.user', array(
           'BOITE' => $row['Boite'],
           'LETTRE'  => $row['Lettre'],
           'DATE' => $row['Date']));

En principe, on met les "sous-blocks" (Periode) en minuscule.


P@t

Hors ligne

#28 2007-12-02 19:16:01

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Je viens de tester en local
Il répond ce message pour les 5 variables à affecter
Notice: Undefined variable: row in ..\Mes documents\web\galerie\plugins\PersonalPlugin\br_bureau.php on line 26

J'ai testé la requête en phpadmin, elle marche
Merci de ton aide

Hors ligne

#29 2007-12-02 20:37:17

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

Re: [Résolu] Moteur de template

C'était juste un exemple pour te montrer comment utiliser assign_block_vars pour des blocs incrustés!
Je ne sais pas du tout à quoi ressemble ton fichier php au final...
Et puis je n'ai pas du tout compris ce que tu voulais faire...
A toi de l'adapter... ou de m'en dire plus pour en savoir plus ;-)

Dernière modification par P@t (2007-12-02 20:37:37)


P@t

Hors ligne

#30 2007-12-03 07:38:06

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Voici mon fichier php

$result = pwg_query("SELECT br_bureau.Bureau, br_bureau.Boite, br_bureau.Lettre,
br_bureau.dates, br_bureau.Periode, br_bureau.Indice,
  bureaux_distributeurs.Observations, br_bureau.num_bureau
  FROM br_bureau INNER JOIN bureaux_distributeurs
  ON (br_bureau.Bureau = bureaux_distributeurs.Bureau_distributeur)
  AND (br_bureau.num_bureau = bureaux_distributeurs.num_periode)
  WHERE Bureau like '" . $params['commune'] . "'
  GROUP BY br_bureau.Bureau, br_bureau.Boite, br_bureau.Lettre,
  br_bureau.dates, br_bureau.Periode, br_bureau.Indice,
  bureaux_distributeurs.Observations, br_bureau.num_bureau
  ORDER BY br_bureau.Boite;");

   // modèle à utiliser auquel on adjoint un nom arbitraire
$template->set_filenames(array(
    'body' => dirname(__FILE__) . '/br_bureau.tpl'
  ));

   
  //
  // Assignation des variables dans le block 'user'
  //

      $template->assign_block_vars('PERIODE', array(
           'PERIODE' => $row['Periode'],
           'OBSERVATIONS'  => $row['Observations']));

$template->assign_block_vars('PERIODE.user', array(
           'BOITE' => $row['Boite'],
           'LETTRE'  => $row['Lettre'],
           'INDICE'  => $row['Indice'],
           'DATE' => $row['Date']));
     
 
  // Affichage des données
$desc = $template->parse('body', true);

Le but est d'obtenir ceci dans le fichier tpl

<table border="1" >
<!-- BEGIN Periode -->
   <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>
   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">{user1.PERIODE}</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">{user1.OBSERVATIONS}</font></div></td>
   </tr>
  <!-- BEGIN Periode.user -->
  <tr>
    <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">Lettre Timbre</font></div></td>
    <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Dates observées</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td>
  </tr>
<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">{user.BOITE}</font></div></td>
  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">{user.LETTRE}</font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{user.DATES}</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{user.INDICE}</font></div></td>
</tr>
  <!-- END Periode.user -->
<!-- END Periode -->
  </table>

Voilà tous les éléments.

Hors ligne

Pied de page des forums

Propulsé par FluxBB

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