GALERIE PHOTO DYNAMIQUE GÉRÉE PAR MOTEUR TEMPLATE

darknessneo Messages postés 45 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 septembre 2007 - 8 sept. 2007 à 01:54
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 10 sept. 2007 à 06:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44011-galerie-photo-dynamique-geree-par-moteur-template

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
10 sept. 2007 à 06:47
ce que je trouvais nul en xslt : tu assembles une chaine pour ensuite effectuer un parsing / transformation / reassemblage, alors ok c'est rapide, mais ca ne peut pas etre rapide sur toutes les pages...

"Il n'y a pas un seul moteur de template php qui offre autant de possibilités et de souplesse."=> mon moteur ne permet pas de faire du rtf ou du docx je te l'accorde... a part ca... mon moteur est a base d'un espece de DOM recode en php5, t'as des classes pour gerer des enfants un peu speciaux, une classe pour les CSS, une classe pour chaque type de XML gere, une classe Visiteur, une classe RecursiveVisiteur, une classe W3cVisiteur qui chercherait d'eventuelles erreurs (mode debug uniquement), une classe GetElementByVisiteur qui permet de rechercher des elements particuliers dans l'arbre, une classe Cache etc... par contre, c'est clair que c'est extremement lourd...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
9 sept. 2007 à 10:03
Petit ajout : il existe des RAD exploitant le xml et xsl. Il est très intéressant d'y jeter un oeil : XMLRad par exemple. C'est très exactement un gros, très gros moteur de template, couplé à un framework pour créer des sites.
On a un langage côté serveur (la plupart des langages sont supportés, de php à c# en passant par delphi), un serveur de base de données éventuellement, et on génère uniquement du xml.
Les pages côté client, elles, sont des pages xsl qui accueillent les flux xml.
On ajoute à ça Javascript, et on s'amuse beaucoup!
Bon je trouve ce RAD assez lourd, mais il n'empêche, le principe est très très intéressant.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
9 sept. 2007 à 09:57
@darknessneo => ce n'est pas incompatible. Déjà, xml et xsl sont des recommendations du w3c aussi. Ensuite, dans xhtml, il y a x pour...xml. Caler un site sur du xhtml, c'est la promesse que des flux xml s'y intègreront très bien.
xsl, via xslt, te permet de transformer un flux xml pour obtenir l'output souhaité : cet output, ce peut être...du html :-) Ou plutôt du xhtml. Ou tout autre output, en fait. le "t" de xslt veut dire transformation.
En fait, xhtml, c'est du xml. Tu peux l'éditer avec le logiciel d'Altova XMLSpy, par exemple, sans soucis. DOMDocument de PHP peut parfaitement parser un flux xhtml (ce qui est très sympa!). xhtml, c'est aussi le standard actuel du web pour une utilisation "normale" (j'entends par là, un ordinateur et un navigateur standards). Ce sera donc ta sortie standard. Maintenant, via xml et xslt, rien ne t'empêche de créer d'autres sorties : ton utilisateur utilise le wap ? Yop, une petite détection, et la sortie devient wap compliant. Tout ce que tu dois faire, c'est créer une feuille xsl pour chaque sortie. Tu veux une sortie pdf ? Sans problème avec xsl-fo.
Mieux encore : tu ne veux que du xhtml, MAIS tu veux pouvoir changer à loisir le format de ton affichage : en colonnes, en lignes, bouger les éléments...encore une fois, xsl-t te permet de le faire à moindre frais. Tu peux même sortir du svg par exemple, pour avoir une sortie entièrement graphique :-) Ou du rtf. Ou le nouveau format de Microsoft, docx. Bref, tout ce qui est créé à partir de balises, en gros.
J'ai écrit il y a quelques temps un petit script qui s'appelle XML MENU, publié ici. Il est petit, pas complet, mais a l'avantage de montrer ces possibilités : tu crées un menu en xml, et il te l'affiche en fonction de différentes feuilles xsl : ici en tableau, là en liste...tu obtiens des affichages très différents, avec pourtant exactement le même flux xml derrière.
Ca va plus loin que les feuilles css parce que tu peux modifier les balises, pas seulement leur appliquer un style de mise en page. Tu peux modifier tout le document, y compris son content-type évidemment.
Et je ne te parle pas de l'encodage :-) C'est difficile à gérer, l'encodage, toujours, mais xml n'est pas un frein, loin de là.

Tu peux même aller plus loin si on reste dans le web : xhtml, c'est du xml. xml accepte tout type de balsies personnelles, si tu crées une dtd ou un schéma. Ben xhtml, c'est pareil...ce qui veut dire que tu peux créé une dtd ou un schéma personel, lier tes documents xhtml avec, et...magie, tes balises et attributs persos s'intègrent parfaitement dans ton xhtml!
Imagine...tu utilises un web service quelconque qui te retourne un flux xml te donnant des indications...je ne sais pas moi, le suivi de colis, par exemple (parce que tu gères une boutique en ligne). Tu peux effectivement utiliser xsl pour modifier ce xml et le transformer via xslt en html, puis l'afficher. Ou tu peux aussi créer un schéma spécialement conçu, qui va indiquer comment le navigateur doit afficher ces nouvelles balises genre <date>18/09/2007</date>. Et avec ta css, en plus, tu leur appliques des styles. Le résultat ? Tu obtiens tout simplement de nouvelles balises xhtml...au même titre que div, span, dd et compagnie.

Il n'y a pas un seul moteur de template php qui offre autant de possibilités et de souplesse.
Et si ton site était encore en html4.0, tu n'aurais pas non plus toutes ces possibilités, d'où l'intérêt de passer au xhtml strict.
darknessneo Messages postés 45 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 septembre 2007
9 sept. 2007 à 09:14
enfaite, question, pourquoi dans un site on ma tané les fesses a rendre mon site 100% correct xhtml via le validateur W3C alors qu'ici on me dit de passer au xsl et xml j'avoue que je m'y perds un peu...
darknessneo Messages postés 45 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 septembre 2007
9 sept. 2007 à 03:25
mon site est de type multimedia avec un tres large contenu. Au vus des propos sur ce type de codage, cela est-il vraiment conseillé pour mon site?
Pour le moment mon trafic est relativement faible car mon site vient tout juste de réouvrir ses portes mais qui sait au fil du temps...
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 sept. 2007 à 16:25
Quelques liens pour le xsl :

http://haypo.developpez.com/tutoriel/xml/xslt/
http://haypo.developpez.com/tutoriel/xml/xslt/programmation/
http://erwy.developpez.com/cours/langage/xslt/variable/
http://erwy.developpez.com/cours/langage/xslt/conditions/
http://erwy.developpez.com/cours/langage/xslt/boucle/

@note au admin : je sais pas si on a le droit de mettre des liens vers d'autres sites en programmation, bien que je considère developpez comme un complément à phpcs (et inversement), et pas un concurrent. Maintenant si mon post est refusé, alors désolé :)
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 sept. 2007 à 16:17
@malalam : En même temps, quand tu regarde les possibilités énormes que tu a avec, ya rien à dire ! :) c'est juste chiant au début à comprendre la syntaxe, et encore, je trouve que ca rentre encore assez facilement ! :)

@darknessneo
Oui je sais que c'est pas très agréable d'entendre dire qu'il vaut mieux utiliser un moteur de template (type tbs) et qu'ensuite on te dit que finalement non. Mais mon avis sur la chose à aussi tres fortement évolué. Je vais t'en faire part.
En fait, tout d'abord, grace à tbs, je pense que t'a déjà pas mal appris sur comment découper ton travail pour le traitement et l'affichage (et le stockage des données, MVC : Modèle, Vue, Controleur).
C'est déjà une grande étape, ce qui n'est pas négligeable.
Maintenant, utilser un moteur xsl, c'est l'étape suivante, encore plus performante.
Je m'explique : Tu crée un fichier xml, genre :

<title>Welcome !</title>
<menu>
Accueil
Mes images !
...
</menu>
<content><![CDATA[Bienvenue sur mon site cher visiteur blablablablalb]]></content>



(ca c'est un xml que tu a généré dans ton php)
Tu crée une nouvelle classe Vue (s'il n'en existe pas sur phpcs qui gere le xsl, ca ne saurait tarder :p), et tu importe ton xml, et tu lui dit quelle feuille de style xsl tu lui applique (en général, le nom de la feuille c'est le meme nom que la page en cours, mais avec l'extension xsl), php va effectuer la transformation, et te retourner une page html avec les éléments titre, menu et content remplacés. (Bon, faut apprendre la syntaxe, ca c'est autre chose :))
Jusque là, rien de très différent à ce que tu connais : un code d'origine, un template, une modification.

Mais le gros avantage, c'est que comme à l'origine, tu à un xml, et comme tu le sais tres bien, le xml, ca marche avec tout :p, bah ton xsl, ca peux etre pour un site web, mais aussi pour un téléphone portable en IMode, pour GPS, mais aussi pour une cafetiere (qui gere le navigateur web :p), un frigo, etc ! et Oué, grace au XML/XSL, tu peux afficher ton contenu pour N'IMPORTE quel type d'interpreteur !!!!!!!
(=> je n'ai pas dit de bêtise là-dedans Malalam ? :))

Bon, apres, c'est fortement recommandé d'intégrer dans ton moteur de rendu, une gestion du cache, car la transformation (en php5 c'est mieux supporté) du XML avec XSL, c'est assez lourd parait-il, donc si t'a 500 visiteurs par jours, ton serveur va ptete pas tenir, donc tu met en cache le rendu, et s'il n'y a pas eu de modification, il te retourne le fichier en cache plutot que refaire un rendu !

Euh ... voila ! :)
darknessneo Messages postés 45 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 septembre 2007
8 sept. 2007 à 12:44
je prends tout ce que veut bien me donner, y a aucun soucis, je sais bien que des galeries images, y en a des kilos tonnes, mais j'en avais fais une super simple et codefalse ma dit de la refaire via moteur template, ce que j'ai fais ici. Donc voila voulou.
J'ai plusieurs pages en effet, j'avais pensé faire des fonctions dans une seule et meme page en effet, mais j'avais tellement de chose a faire sur mon site que je n'avais pas eu le temps. Maintenant que mon site a un peu de contenu je vais pouvoir m'attaquer au code.

Pour ce qui est du xsl etc etc, je n'y connais rien, alors si on pouvait m'aiguiller.

Merci a vous deux en tout cas.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 sept. 2007 à 12:21
@Codesfalse : Bieeeen! :-) Enfin quelqu'un qui estime que XSL est un moteur de template extraordinaire! Ca me fait plaisir, tien :-)
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 sept. 2007 à 12:01
Yop ! :)

Déjà deux trois trucs : Tu veux qu'on appel les images par les variables type et id. Je trouve ca compliqué.
Pourquoi ne pas faire images.php?url=images/manga/
Par contre, dans cas, pense à vérifier la validité de url (pour ne pas remonter plus haut que le script en question.

Ensuite, tu utilise plusieurs fichier (scandir, nbpage, miniatures, ..), pourquoi ne pas en faire des fonctions, ca serait carrément plus simple !

C'est vrai que comme dit Malalam, il existe des tonnes de script de ce genre sur phpcs, maintenant, il serait interessant de travailler sur un en particulier histoire d'en avoir un vraiment performant (sauf si c'est déjà fait, ca, je ne sais pas ! :p)

Ensuite, regarde pour évoluer au niveau du moteur de template, si tu utilise php5 (qui est un mieux), tu peux travailler avec du xml couplé au xsl par transformation xslt, c'est un poil plus compliqué, mais carrément plus performant. Je sais que je t'avais dit auparavent d'utiliser un moteur de template, mais c'est pour te permettre de comprendre le fonctionnement. Maintenant essaye de comprendre l'usage de XSL(T), et ce sera parfait :)

Si tu veux de l'aide, n'hésite pas
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 sept. 2007 à 10:24
Hello,

je vais être un peu dur...
il y a pas mal de choses à dire : déjà des galeries sur phpcs, il y en a des tonnes. Et la tienne n'ajoute absolument rien à celles existantes, que ce soit en termes de fonctionnalités, ou de code.
Parlons du code: il n'apporte rien pédagogiquement parlant (j'aurais accepté un source déjà existant en de multiples exemplaires sur phpcs, mais possèdant un code intéressant, qui peut apprendre des choses aux débutants). C'est du code de débutant.
Ca manque de fonctionnalités, donc, je l'ai dit.
Tu utilises un moteur de template (outre le fait que je ne suis pas fan, mais ça, c'est mon avis) qui pèse à lui seul 10 fois plus que tous les fichiers réunis de ta galerie! Franchement, quel intérêt...? Et puis il n'y a qu'à voir tes fichiers modèles pour se convaincre du fait que tinybutstrong ne sert à rien ici.

Juste un coup de pouce, pour t'aider à ajouter au moins une fonctionnalité sympa (ou au moins, virer un problème de ton code) : tu peux, à génération d'une vignette, ajouter la date de création de celle-ci dans son nom. Ainsi, à chaque fois que tu scannes ton répertoire d'images originales pour voir s'il y en a de nouvelles, tu vérifies aussi, pour celles ayant déjà une vignette, leur date de dernière modification (filemtime()) : si cette dernière est postérieure à la date inscrite dans le nom de sa vignette, ben il y a de grandes chance pour que l'image originale ait été modifiée depuis.
darknessneo Messages postés 45 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 septembre 2007
8 sept. 2007 à 01:54
Note:
j'ai oublié de préciser ceci: lors de la premiere lecture d'un dossier d'images, les miniatures sont créées dans un nouveau répertoire crée dans le dossier lu. Lors de prochaines lectures du meme dossier, le code va vérifier si une miniature existe pour le nom de l'image qu'il va ouvrir.
S'il trouve la miniature il ne la recré pas.
Cependant, ceci à un défaut, si vous changez ou remplacez une image existante par une autre contenant le meme nom, la miniature ne sera pas actualisée.
Pensez à supprimer le dossier contenant les miniatures ou juste la miniature en question.
Rejoignez-nous