[RESOLU] exécuter simplement du php dans un fichier tpl

Mammouth du PHP | 737 Messages

05 sept. 2013, 17:01

Bonjour et merci à tous ceux qui prendront le temps de me lire et m'aider.

Voici le "souci" :
J'ai déjà un site en place avec une arborescence défini mais à mes yeux très chaotique et je cherche simplement à exécuter une page php dans un template d'ezpublish existant que j'ai identifié.

Juste afficher un petit Hello EZ World d'un echo de ma page hello.php qui se trouve dans .../www/monsite/repertoire1/repertoire2/hello.php

et le tpl quand à lui se trouve dans : .../www/extension/repertoiretrucmuche/design/repertoiremachin/templates/parts/monfichier.tpl

Pourriez-vous me dire comment raccorder/exécuter hello.php dans monfichier.tpl.

Ca parrait simple mais je me prends vraiment la tête sur cette problématique. Je pensais que ca pouvait se faire simplement mais visiblement non en même temps je suis noob sous EZ.

Par avance merci de votre précieuse aide.

Bien à vous,

Cdlt,

Mega
;)

Ps : d'ailleurs je suis curieux de savoir comment on dit que tel article de telle rubrique correspond à tel template ?
Ps+ : comment appelle t-on une vue sous ezpublish quand on a activé l'extension ?
Dyslexics are teople poo

ViPHP
xTG
ViPHP | 7331 Messages

05 sept. 2013, 18:50

Ce n'est pas vraiment prévu à priori, quelques solutions ici : http://share.ez.no/forums/setup-design/ ... -templates

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8756 Messages

06 sept. 2013, 01:08

J'ajouterais qu'un temlate représente la vue et est parser, par php dans ici, afin de générer la vue du coup les données sont récupérées avant puis intégrées au reste.

Je ne pense être très clair. Mais le principe est simple, le template c'est la vu et ne colle pas de code dedans autres que pour gérer l'affichage (par exemple les couleurs de ligne d'un tableau etc).

Le template c'est du search & replace. Tu met un tag (genre #title#) qui sera remplacé par le contenu d'une variable (par exemple avec str_replace).
D'autre sont plus complexe et propose, par exemple, des systèmes de boucle ou de test (par exemple écrire un foreach en xml qui correspondra au while de tes traitements de donnéess).


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

06 sept. 2013, 12:44

Bonjour et merci (une fois de plus)

Disons que je me suis penché un peu sur le souci et je dois absolument depuis un template appelé du php en masse. Après recherches et autres discussions j'ai vu qu'on pouvait créer des extensions faisant référence à des modules permettant de créer ses propres vues. J'ai suivi un tuto qui paraissait caler sur le sujet mais malgré tous mes efforts, impossible de faire fonctionner le bignou. Mon extension est présente dans l'admin, mon module également, j'affecte les droits qui vont bien sur le module mais quand j'appelle le module...NOT FOUND ! kernel (20), Module non trouvé (pourtant dans le backoffice).
Pourquoi tant de haine ?

http://www.foujino-blog.be/2011/03/02/e ... de-widget/

Un petit coup d'oeil du côté des logs :

[ Sep 06 2013 12:27:51 ] [127.0.0.1] eZTemplate @ extension/ezflow/design/ezflow/templates/parts/extra_info.tpl:11[0]:Cannot retrieve attribute of a NULL
[ Sep 06 2013 12:28:08 ] [127.0.0.1] index:Undefined module: monmodule
[ Sep 06 2013 12:28:08 ] [127.0.0.1] error/view.php:Error ocurred using URI: /ezpsite/index.php/fre/monmodule/monaction/value1/value2

Votre concours est vraiment la bienvenue si vous voyez quoique ce soit...48h sur cette chose et probablement 72.

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8756 Messages

07 sept. 2013, 17:13

désolé je ne connais pas le fw.

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

09 sept. 2013, 10:22

Bonjour, ok merci à tous et en partriculer à toi moogli :)

Après plusieurs "bidouilles" et écart du tuto j'ai résussi à afficher qq chose mais j'ai cette erreur :

( ! ) Strict standards: Only variables should be assigned by reference in C:\wamp\www\ezsite\extension\ezflow\modules\toto\monaction.php on line 6
Call Stack
# Time Memory Function Location
1 0.0034 699352 {main}( ) ..\index.php:0
2 0.3685 8640608 eZModule->run( ) ..\index.php:690
3 0.3691 8657224 eZProcess::run( ) ..\ezmodule.php:1198
4 0.3692 8657432 eZProcess->runFile( ) ..\ezprocess.php:39
5 0.3702 8663592 include( 'C:\wamp\www\ezsite\extension\ezflow\modules\toto\monaction.php' ) ..\ezprocess.php:64

J'ai lu que ca pouvait venir du fait que la fonction : $tpl =& templateInit(); était dépréciée... A replacer par ...templateFactory...On ne peut pas fixer le pb en sachant que j'ai version d'ezp de 4.2 qui tourne aussi sous php/mysql 5, apache 2.

Par avance merci de votre aide...

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8756 Messages

09 sept. 2013, 13:19

Vire le &
Ou modifie la fonction.

Le message indique que tu ne pas retourner autre chose qu'une variable avec le passage par référence.
Dans ton cas il y a sûrement un return 'truc'; ?

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

13 sept. 2013, 15:51

Bonjour,

J'ai réussi avec un sérieux coup de pouce à afficher des choses en PHP qui à la base ne font pas parti du template grâce au template operateur. J'ai bien galéré et galère toujours lol donc aussi minime soit mon aide je suis prêt à aider à mon tour ;)

Dans une de mes classes j'ai cherché à mettre du contenu en tampon mais quand je libère ce contenu celui-ci est libéré au-dessus de toute ma page et toutes mes balises alors que mon ob_end_flush() est appelé dans une fonction ou bien après quelques modifs ca me renvoie 1.

Dans ma classe opérateur puis-je déclarer une fonction bidon qui afficherait "hello php france", "beau comme un zeus ^^" (j'en suis pas hein) le tout sauvegarder en tampon et que cette même fonction serait appelée dans une autre fonction de ma classe. Je ne sais pas si je suis clair.

Mega
;)
Dyslexics are teople poo

Mammouth du PHP | 737 Messages

16 sept. 2013, 17:53

Bonjour, pour info j'ai réussi à faire ce que je voulais grâce à la mise en tampon du résultat de ma fonction.

CA MARCHE NICKEL !!!!

ob_start();
//appel du webservice
...
return ob_get_flush();

et le tout est réinjecté dans mon template alors que la fonction initiale ne fait pas parti du template operator/operateur.

Mega
;)
Dyslexics are teople poo