•  » Utilisation
  •  » Code PHP ne fonctionne pas dans "section personnalisée"

#1 2009-10-25 08:29:06

forum6691
Membre
2008-10-11
37

Code PHP ne fonctionne pas dans "section personnalisée"

Bonjour

J'utilise PIWIGO 2.02

J'essaye d'ajouter du code PHP dans une section personnalisée créée avec le plugin "Advanced Menu Manager"
Il semble ne pas être interprété ?

exemple: J'ajoute
<?php

echo "test affichage";   

?>

Rien ne s'affiche dans la zone.

Faut il mettre des balises spéciales pour exécuter du code PHP dans ces sections ?
Merci.

Hors ligne

#2 2009-10-25 08:36:43

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16919

Re: Code PHP ne fonctionne pas dans "section personnalisée"

Je dirais que l'on ne peux pas je notifie l'auteur du plugin pour qu'il vienne répondre


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#3 2009-10-25 08:45:07

forum6691
Membre
2008-10-11
37

Re: Code PHP ne fonctionne pas dans "section personnalisée"

C'est bizarre, on peut mettre du javascript mais pas php script ?

Mon besoin de PHP est pour écrire un petit parser xml pour afficher un flux RSS d'un autre site.

Cordialement
Cyril

Hors ligne

#4 2009-10-25 08:57:59

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Code PHP ne fonctionne pas dans "section personnalisée"

Je ne suis pas chez moi ce WE, donc pas d'environnement ni code source à dispo.

Mais de mémoire, comme çà : le contenu d'une section personnelle n'est tout simplement pas parsé car stocké dans une variable du template. Or Smarty ne parse pas le contenu de ses variables, il se contente (à juste titre) de générer du HTML.

Ce qui explique pourquoi du JS fonctionne et pas du PHP.

Pour ton besoin, deux solutions :
- faire le parser XML en JS
- utiliser un plugin perso pour affecter le contenu du menu (tu trouveras les bases dans le topic [Forum, topic 16135] Modifier dynamiquement le contenu des blocs de menu)


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#5 2009-10-25 09:10:02

forum6691
Membre
2008-10-11
37

Re: Code PHP ne fonctionne pas dans "section personnalisée"

Merci pour cette réponse rapide (on est dimanche matin quand même) précise et très technique

Je vais regarder plutôt la deuxième solution.
Cyril

Hors ligne

#6 2009-10-25 10:54:34

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Code PHP ne fonctionne pas dans "section personnalisée"

grum a écrit:

(...) Smarty ne parse pas le contenu de ses variables, il se contente (à juste titre) de générer du HTML.

Juste pour la précision technique, ne serait-ce pas plutôt du PHP, que Smarty génère ? Lequel PHP génère lui-même du HTML, lorsque interprété par le serveur ?

Hors ligne

#7 2009-10-25 20:05:25

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Code PHP ne fonctionne pas dans "section personnalisée"

on sort un peu du sujet Piwigo en abordant la façon dont Smarty fonctionne...

mais bon, Smarty exploite un template écrit en en pseudo-HTML (du fait qu'il contient des instruction Smarty, ce n'est pas vraiment du HTML), et génère effectivement un fichier PHP à partir de ce template.
Mais le fichier PHP généré fait toujours référence à des variables. Au moment de l'utilisation d'un template, deux cas (dans les grandes lignes) :
- c'est la première fois qu'il est appellé : Smarty "précompile" le template et génère un fichier PHP, puis exécute le fichier PHP généré
- ce n'est pas la première fois qu'il est appellé : Smarty exécute le fichier PHP correspondant au template

Mais le fichier "précompilé" qui est un fichier PHP, génère bien en sortie un fichier HTML lequel n'est pas parsé par PHP.
Donc le code PHP paramétré dans la section personnalisée d'AMM ne se retrouve pas dans le template précompilé, mais  bien dans un fichier HTML.


Dans la même idée, inclure du PHP directement dans un template ne sert à rien : si l'on veut vraiment inclure du code dans le template, Smarty dispose d'instructions spécifiques pour le faire.


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#8 2009-10-25 20:16:59

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16919

Re: Code PHP ne fonctionne pas dans "section personnalisée"

grum a écrit:

Dans la même idée, inclure du PHP directement dans un template ne sert à rien : si l'on veut vraiment inclure du code dans le template, Smarty dispose d'instructions spécifiques pour le faire.

et les instructions spécifiques pour le faire dans AMM cela fonctionne ?


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#9 2009-10-25 20:43:55

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Code PHP ne fonctionne pas dans "section personnalisée"

ddtddt a écrit:

grum a écrit:

Dans la même idée, inclure du PHP directement dans un template ne sert à rien : si l'on veut vraiment inclure du code dans le template, Smarty dispose d'instructions spécifiques pour le faire.

et les instructions spécifiques pour le faire dans AMM cela fonctionne ?

Je n'ai pas testé, mais probablement pas car à ma connaissance Smarty ne parse pas le contenu de ses variables. pour parser une variable, il faut le faire manuellement avant d'alimenter Smarty.


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#10 2009-10-26 17:37:01

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Code PHP ne fonctionne pas dans "section personnalisée"

grum a écrit:

on sort un peu du sujet Piwigo en abordant la façon dont Smarty fonctionne...

C'est vrai. Désolé forum6691 ; j'espère néanmoins que l'intérêt de la discussion sera quand même là.

(...)

Mais le fichier "précompilé" qui est un fichier PHP, génère bien en sortie un fichier HTML lequel n'est pas parsé par PHP.

Smarty contient donc un parseur PHP en interne ? On peut avoir une interprétation différente d'un code PHP entre celui donné à Smarty, et celui interprété sur le serveur, dûe à une différence de version de parseur PHP, par exemple ?

Mais bon, ces questions sont assez peu importantes je pense ; globalement, ça va fonctionner de telle sorte qu'en gros les templates TPL génèrent un affichage HTML, ce qui nous intéresse en fin de compte.

Merci grum pour ces précisions intéressantes.

Hors ligne

#11 2009-10-26 18:01:34

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

Re: Code PHP ne fonctionne pas dans "section personnalisée"

LucMorizur a écrit:

Smarty contient donc un parseur PHP en interne ? On peut avoir une interprétation différente d'un code PHP entre celui donné à Smarty, et celui interprété sur le serveur, dûe à une différence de version de parseur PHP, par exemple ?

On s'embrouille beaucoup ici!
Le php est un language qui est interprété, et non pas parsé.... contrairement au bbcode, au xml, au language smarty, etc...
Si smarty génère un fichier php après avoir parsé un fichier tpl, c'est uniquement pour le mettre en cache, et ainsi gagner en performance.
Ainsi, un fichier .tpl n'est parsé qu'une seule fois... ensuite, c'est toujours le fichier php en cache qui interprété (et non pas parsé!).

Si on veut intégrer des balises smarty (comme {php}{/php} pour pouvoir mettre du php) dans un  bloc du menubar (ou dans un bloc de pwg stuffs), il faudrait d'abord parser le contenu envoyé (grace au parser de smarty) avant de l'envoyer au template, ce qui est tout à fait faisable... mais pas très rentable au niveau des perfs!

Dernière modification par P@t (2009-10-26 18:02:24)


P@t

Hors ligne

#12 2009-10-26 20:31:21

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Code PHP ne fonctionne pas dans "section personnalisée"

P@t a écrit:

Le php est un language qui est interprété, et non pas parsé....

Ben... Et pourtant : PHP parse les fichiers avant des les interpréter..

Le fichier php suivant :

Code:

<html>
 <body>
  <div>
    <p>
     blablah
    </>
   <?php
          echo "truc";
   ?>
   <p> machin</p>
   <?php
          echo "bidule";
   ?>
  </div>
 </body>
</html>

nécessite forcément une étape de parsing ne serait-ci que pour détecter les balises <?php> ;-)

P@t a écrit:

Si on veut intégrer des balises smarty (comme {php}{/php} pour pouvoir mettre du php) dans un  bloc du menubar (ou dans un bloc de pwg stuffs), il faudrait d'abord parser le contenu envoyé (grace au parser de smarty) avant de l'envoyer au template, ce qui est tout à fait faisable... mais pas très rentable au niveau des perfs!

Tout à fait d'accord.
Et je rajouterais que de permettre une telle chose serait de toutes façon assez risqué...


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#13 2009-10-27 01:33:33

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

Re: Code PHP ne fonctionne pas dans "section personnalisée"

grum a écrit:

Ben... Et pourtant : PHP parse les fichiers avant des les interpréter..

Bon, la on chipote ;-)

Bref... perso je serais assez partant (pour PWG Stuffs en tout cas) pour pouvoir faire du smarty dans les blocs persos... éventuellement désactiver la balise {php} par sécurité (quoique ce n'est pas franchement un problème puisque seul les admins peuvent ajouter ou modifier un bloc).
Par contre, pour éviter de devoir parser le fichier systématiquement, il faut gérer la mise en cache, et donc un identifiant de compilation... mais smarty permet de faire ca sans trop de soucis...


P@t

Hors ligne

#14 2009-10-27 07:24:01

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: Code PHP ne fonctionne pas dans "section personnalisée"

P@t a écrit:

grum a écrit:

Ben... Et pourtant : PHP parse les fichiers avant des les interpréter..

Bon, la on chipote ;-)

Pas vraiment, c'est le grand débat des spécialistes du PHP.
PHP est le premier parseur, tout le monde est d'accord en principe, mais doit-on parser du code avec PHP?
2 écoles s'affrontent les pour et les contre.
Piwigo utilise Smarty pour parser du code (autant dire qu'on est pour).
Smarty est limite pour autoriser le parsing du PHP.
Et maintenant, on va parser du texte pour résoudre des appels php.
Ne pourrait-on pas plutôt coder [hook=my_local_function(args)], par exemple ?
Et laisser le webmaster de coder sa fonction dans le plugin personnel ?
Je suis persuadé que l'appel de la fonction existe déjà dans Smarty, il devrait être suffisant de l'appeler, non?
C'est n'est qu'une idée ou de faire quelque chose de ce genre.
Je n'ai pas réfléchi plus à cette question encore.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#15 2009-10-27 10:33:05

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

Re: Code PHP ne fonctionne pas dans "section personnalisée"

Je préfère utiliser la syntaxe smarty dans un bloc perso pour plusieurs raisons:

- On peut insérer facilement du php
- On peut utiliser les variables déjà assignées à smarty (comme par exemple {$USERNAME})
- On ne parse qu'une seule fois le contenu grace à la mise en cache...


P@t

Hors ligne

  •  » Utilisation
  •  » Code PHP ne fonctionne pas dans "section personnalisée"

Pied de page des forums

Propulsé par FluxBB

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