Messages recommandés

PeterRabbit    371

Vous avez tous des tas d'idées pour apporter des petits plus à Zwii ou corriger ce que vous considérez comme des défauts.

Certains ont même trouvé le moyen d'y parvenir.

Plutôt qu'un tuto, pourquoi ne pas proposer un plugin, simple à installer, à désinstaller et facile à partager ?

Cet atelier vous aidera à le confectionner.

Venez avec votre projet, mais ne soyez pas trop ambitieux : il faudra que vous le meniez à bien pour l'offrir à la communauté des utilisateurs.

 

A bientôt. :)

 

Inscrivez-vous pour participer à l'atelier ! Vous serez ainsi prévenus des nouveaux posts.

On peut prendre le train en marche.

 

inscription.jpg.1be86cd6f011bfc78d88138cb667f0fe.jpg

 

 

Modifié par PeterRabbit
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371


atelier.png.d4f39a30ac47ad537f228f8693a6b803.png

ATELIER #1

MON PREMIER PLUGIN

 

 

 

Nous travaillerons sur une 8.45 fraîchement installée en ligne dans un sous-répertoire de votre espace personnel ("votre_nom_de_domaine/8.45/").

Pour le problème qui servira de support à ce premier atelier, rendez-vous à l'adresse "votre_nom_de_domaine/8.45/blog/config 

 

Saperlipopette, il y a un petit défaut d'encodage !

 

config-pasok.jpg.4d8f89cf50ae19480d01a29535f0622f.jpg

 

Comme vous trouvez que ça fait désordre et que vous ne croyez pas vraiment à la vertu des tutoriels, vous décidez de confectionner un plugin qui permette aux utilisateurs de corriger le défaut en question sans avoir à soulever le capot et à mettre les mains dans le cambouis.

Oui, je sais, ce n'est qu'un détail infime, d'autant que vous êtes le seul à le voir et qu'il ne concerne que deux mois de l'année (février et août), mais il fallait bien trouver un vrai problème "simple" pour rendre cet atelier un peu crédible.

 

Pour ce premier exercice, le but étant de vous apprendre à fabriquer des plugins, je vous fournirai le code qui permet de résoudre le problème. Mais une fois que vous saurez faire, vous pourrez appliquer ce que vous aurez appris à votre propre projet.

 

----------

 

Comment confectionner ce "plugin" ? Je vous laisse réfléchir.

 

----------

 

Merci de ne répondre à ce post que si vous avez une idée à soumettre pour résoudre le problème – ou si vous ne constatez pas ce défaut chez votre hébergeur et/ou avec votre navigateur.

@cybertaf Merci de ne pas le corriger entre-temps ! xD

 

in_progress.png.4568538f0bf025a0ab6bb0b3e84c2728.png

 

 

 

 

 

Modifié par PeterRabbit

Partager ce message


Lien à poster
Partager sur d’autres sites
Thispy    53

Nous n'avons pas précisé dans le fichier php le charset, du coup le navigateur est en latin 1 au lieu d'utf-8
C'est pour cela que les accents ne s'affichent pas correctement avec json ?

 

A voir ce que dit le prof :P

 

J'ai trouvé ceci comme explicatif...

Bonjour le chinois !

http://php.net/manual/fr/function.json-encode.php

 

Et je pense que la réponse est ici avec les explicatifs:

https://medium.com/sroze/le-problème-dencodage-des-accents-en-points-d-intérrogation-3c625d132b8f

Modifié par Thispy
info en plus....

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371

Merci @Thispy et @Rich_ :) vous avez raison, mais ce n'est pas la question : la solution technique, je vous la fournirai.

 

Au risque de faire retomber la mousse :beer:, le but de ce premier atelier, c'est de vous amener petit à petit à fabriquer des plugins que vous pourrez ensuite appliquer à ce que vous aurez trouvé ou que vous aurez envie de partager : correction de bug, amélioration de détail, intégration d'un script, etc...

 

Il s'agit donc pour l'instant de réfléchir seulement sur le moyen de diffuser ce que vous avez trouvé. Mais comme vous avez proposé votre réflexion, ça permet d'avancer.

 

2799205-creative-idea-light_99776.png.35008e578636c5b3c9f5791ee311be5d.png

Première solution envisageable :

En fait, pour régler ce défaut d'encodage, il y a cinq lignes à corriger dans trois fichiers (patientez, vous les aurez ! xD). Vous auriez pu vous dire qu'il suffisait de faire une archive de ces trois fichiers modifiés pour que les utilisateurs les montent sur leur site.
Oui, mais ce n'est pas un "plugin".

 

Il faut donc prolonger la réflexion. Comment faire pour que votre modification s'installe automatiquement ?

 

in_progress.png.90e9aa68af9a6015bda0eff55e3f559d.png

 

 

Modifié par PeterRabbit

Partager ce message


Lien à poster
Partager sur d’autres sites
cybertaf    119

Hello,
Grâce à ce poste, je viens de me rendre compte qu'effectivement, il y a deux corrections manquantes dans l'encodage de mes dates... j'attends ton message @PeterRabbit  pour pousser le correctif 8.4.6 :innocent:

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371

Hello, @cybertaf ! Désolé, c'est le sujet de mon atelier. A la fin, les étudiants devraient être capables de diffuser le correctif sous forme de plugin.

Tu te joins à nous ? Inscris-toi pour suivre le fil de discussion et propose ta réponse à ma question. :)

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371
il y a une heure, creatifmen a dit :

@PeterRabbit @Thispy @Rich_
Comment faire pour que votre modification s'installe automatiquement ?
peut être il faudrait créer un installeur qui install les choses à modifier automatiquement dans zwii..

 

Oui, @creatifmen, mais comment ? WP le fait très bien...

Sauf miracle, il n'y aura pas de 9.0. Mais en attendant, on peut faire vivre la belle idée de @Rémi quand il été djeun (sic).

Ma question ne porte que sur le petit problème ci-dessus : pas comment corriger le problème d'encodage, mais comment permettre à un utilisateur lambda de le corriger en un clic ? Ce qui peut ensuite s'appliquer à des tas d'autres choses pour peu qu'on ait des idées : ajouter votre police préférée aux polices par défaut, par exemple.

J'ai peut-être tort, mais je me dis que savoir transmettre aidera peut-être à chercher à comprendre. En tout cas, lorsque j'ai trouvé mon premier truc, je me suis posé la question de savoir comment faire pour le transmettre, moi qui ne suis pas un codeur.

 

 

Modifié par PeterRabbit

Partager ce message


Lien à poster
Partager sur d’autres sites
cybertaf    119
Il y a 11 heures, PeterRabbit a dit :

Hello, @cybertaf ! Désolé, c'est le sujet de mon atelier. A la fin, les étudiants devraient être capables de diffuser le correctif sous forme de plugin.

Tu te joins à nous ? Inscris-toi pour suivre le fil de discussion et propose ta réponse à ma question. :)

Je vais laisser les participants cogités et suivre cet atelier avec attention.

Modifié par cybertaf

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371

2799205-creative-idea-light_99776.png.9eb48bb1042222d1bdbd2060f9d5d3cd.pngAllez, je vous donne un indice supplémentaire et je précise ma question. 9_9

 

 

 

 

 

Les trois fichiers qu'il faudrait modifier sont :

  • index.php
  • module/blog/view/article/article.php
  • module/blog/view/index/index.php

 

Comment faire en sorte que l'utilisateur lambda les installe sur son site en un seul glisser-déposer en utilisant un client FTP comme Filezilla ?

 

in_progress.png.0b1db48d3ce121596e92e43781daef3b.png

 

 

 

 

Modifié par PeterRabbit

Partager ce message


Lien à poster
Partager sur d’autres sites
Rich_    11
Il y a 12 heures, PeterRabbit a dit :

Merci @Thispy et @Rich_ :) vous avez raison, mais ce n'est pas la question : la solution technique, je vous la fournirai.

 

Au risque de faire retomber la mousse :beer:, le but de ce premier atelier, c'est de vous amener petit à petit à fabriquer des plugins que vous pourrez ensuite appliquer à ce que vous aurez trouvé ou que vous aurez envie de partager : correction de bug, amélioration de détail, intégration d'un script, etc...

 

Il s'agit donc pour l'instant de réfléchir seulement sur le moyen de diffuser ce que vous avez trouvé. Mais comme vous avez proposé votre réflexion, ça permet d'avancer.

 

2799205-creative-idea-light_99776.png.35008e578636c5b3c9f5791ee311be5d.png

 

Première solution envisageable :

En fait, pour régler ce défaut d'encodage, il y a cinq lignes à corriger dans trois fichiers (patientez, vous les aurez ! xD). Vous auriez pu vous dire qu'il suffisait de faire une archive de ces trois fichiers modifiés pour que les utilisateurs les montent sur leur site.
Oui, mais ce n'est pas un "plugin".

 

Il faut donc prolonger la réflexion. Comment faire pour que votre modification s'installe automatiquement ?

 

 

 

Hello je regarde en début d’aprem, compliqué quand je suis au taf :dizzy:

a tte

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371

Reprise de l'atelier.

Où vous confectionnerez votre premier plugin... et corrigerez ce petit défaut d'encodage ! @cybertaf sera content. :mrgreen:
 

Personne n'ayant répondu à ma question, j'en déduis que vous êtes tous très occupés, qu'elle était trop simple ou trop difficile, ou que vous êtes timides (rayez les mentions inutiles). Pô grave, j'ai une longue habitude des questions-réponses et des moments de grande solitude. xD On enchaîne donc.

 

------------

 

Deuxième solution possible

 

tip.png.18a3610e8a3697ab35001ee747ed23ec.pngS'inspirer de la façon dont Zwii s'installe sur votre serveur en reconstituant dans une archive la partie de l'arborescence concernée et en y plaçant les trois fichiers modifiés : il suffira à l'utilisateur de copier le contenu à la racine de son espace et d'accepter le remplacement des trois fichiers.

 

 

 

Mise en pratique
Téléchargez les trois fichiers modifiés :

 

Créez un nouveau dossier sur votre bureau et nommez-le "Mon premier plugin", par exemple.
A l'intérieur, placez le fichier "index.php" modifié puis créez un nouveau dossier "module" à l'intérieur duquel vous créerez un dossier "blog"... à l'intérieur duquel vous créerez un dossier "view"...  à l'intérieur duquel vous créerez pour terminer deux dossiers "article" et "index", o.O reconstituant ainsi l'arborescence de Zwii. Reproduisez les noms à l'identique, sans majuscules !

 

arborescence.jpg.4856505502b6ebb58eff30abf644ceba.jpg

 

Placez les deux fichiers modifiés "article.php" et "index.php" (le bon !) dans les dossiers "article" et "index".
Votre plugin est prêt.


Installez-le en copiant l'ensemble (le fichier "index.php" et le dossier "module") à la racine de votre site.
Acceptez les trois remplacements.


C'est fait, vous pouvez vérifier, le défaut est corrigé dans l'index du blog (/blog), dans les articles(/blog/mon-troisieme-article) et dans la page de configuration du module dans la partie admin (/blog/config). 

 

NB : @creatif m'a dit qu'il reste un défaut en local. Désolé, je n'ai pas les moyens de tester.

 


tp.png.95bb09f5caa382f8ab73cb520671aec6.png

 

Exercices d'application à faire pour la prochaine séance

 

 

 

 

1. Même s'il est peu probable qu'un utilisateur veuille désinstaller ce correctif, vous confectionnerez un module de restauration qui permette de remettre le site dans son état initial en utilisant le même principe et vous vérifierez qu'il fonctionne bien. Je pense que vous saurez comment faire.

 

2. Après quoi, vous confectionnerez le plugin définitif : 

  • Renommez les deux modules d'installation et de restauration "utf8_encode_install" et "utf8_encode_restaure".
  • Rédigez un petit "readme.txt" ou, mieux, un "readme.md" en essayant l'éditeur Markdown en ligne StackEdit. https://stackedit.io/app#
  • Zippez le tout.

Avec une vignette et une ou deux copies d'écran, votre premier plugin serait presque bon pour la rubrique "Téléchargements" du forum... s'il ne présentait pas un défaut quasi rédhibitoire...

 

J'avoue que c'est cette technique que j'ai utilisée à mes débuts, il y a deux ans. Jusqu'au jour où je me suis dit qu'écraser les fichiers d'origine, c'était risquer d'écraser d'éventuelles personnalisations apportées par les utilisateurs, même dans des fichiers qui paraissent secondaires. Celui qui aurait modifié la police de la signature des articles, par exemple, aurait bien raison de vous maudire !

Je me suis donc dit qu'il fallait que j'acquière les rudiments de PHP pour réécrire ponctuellement les fichiers sans toucher au reste du code, mais toujours en proposant un module de restauration qui restitue les fichiers dans leur état initial.

 

On verra ça demain ? :)

in_progress.png.7f8128acee3b10b722798008911357ac.png

Modifié par PeterRabbit
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Thispy    53

Je recherche l'astuce sur le web, mais c'est vraiment chinois…
Astuce de ton glissé déposé
Je creuse…

 

J'espère que tu n'es pas pressé PeterRabbit.
Parce quand j'ai commencé à codé en brut tout au début, il m'a fallu trois mois pour trouver comment faire pour changer d'un lien accueil, au lien contact par exemple… (Bref changer, de page quoi, poursuivre le site :p)

 

Autrement, je ne recherche pas ton glissé déposé et je fais directement les tests sur les fichiers cité ici plus haut...

 

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371

@Thipsy Parcours le topo que je viens de publier. La réponse à ma question est là, et il y a des TP pour agiter les doigts et les neurones.

 

PS : Pour l'instant, ne cherche pas ailleurs que dans ta tête ! xD

Modifié par PeterRabbit

Partager ce message


Lien à poster
Partager sur d’autres sites
cybertaf    119

Hello !
Désolé mais je dois publier un correctif qui inclut la solution du problème soulevé pour votre l'atelier :  lors d'une mise à jour, le problème de la page blanche sur les modules news et blog n'était pas vraiment complètement corrigé, il faut donc y remédier au plus vite.
 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Thispy    53
Il y a 7 heures, PeterRabbit a dit :

Reprise de l'atelier.


 

Personne n'ayant répondu à ma question, j'en déduis que vous êtes tous très occupés, qu'elle était trop simple ou trop difficile, ou que vous êtes timides (rayez les mentions inutiles). Pô grave, j'ai une longue habitude des questions-réponses et des moments de grande solitude. xD On enchaîne donc.

 

 

Réponse à ta question fort occupée !
J'ai commencé ce matin à 4H30 et je viens de rentrer.
Pour le reste, je vais lire et relire ton info et voir ce qui dit mon petit cerveau.

Partager ce message


Lien à poster
Partager sur d’autres sites
Thispy    53
Il y a 7 heures, PeterRabbit a dit :

Reprise de l'atelier.

Où vous confectionnerez votre premier plugin... et corrigerez ce petit défaut d'encodage ! @cybertaf sera content. :mrgreen:
 

Personne n'ayant répondu à ma question, j'en déduis que vous êtes tous très occupés, qu'elle était trop simple ou trop difficile, ou que vous êtes timides (rayez les mentions inutiles). Pô grave, j'ai une longue habitude des questions-réponses et des moments de grande solitude. xD On enchaîne donc.

 

------------

 

Deuxième solution possible

 

tip.png.18a3610e8a3697ab35001ee747ed23ec.pngS'inspirer de la façon dont Zwii s'installe sur votre serveur en reconstituant dans une archive la partie de l'arborescence concernée et en y plaçant les trois fichiers modifiés : il suffira à l'utilisateur de copier le contenu à la racine de son espace et d'accepter le remplacement des trois fichiers.

 

 

 

Mise en pratique
Téléchargez les trois fichiers modifiés :

 

Créez un nouveau dossier sur votre bureau et nommez-le "Mon premier plugin", par exemple.
A l'intérieur, placez le fichier "index.php" modifié puis créez un nouveau dossier "module" à l'intérieur duquel vous créerez un dossier "blog", à l'intérieur duquel vous créerez un dossier "view", à l'intérieur duquel vous créerez pour terminer deux dossiers "article" et "index", o.O reconstituant ainsi l'arborescence de Zwii. Reproduisez les noms à l'identique, sans majuscules !

 

 

Jusqu'ici en effet, j'ai su faire les modifs avec succès ...
Sauf que nous n'avons pas de mérite...
C'est comme si nous avions téléchargé la version officielle sur le site de zwii
Toutes les modifications, on été effectué par les soins du prof PeterRabbit

Bon, j'essaye la suite..

Ensuite, je décortique les fichiers php pour voir la différence entre les anciens fichiers et les nouveaux :P

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371
il y a 39 minutes, cybertaf a dit :

Hello !
Désolé mais je dois publier un correctif qui inclut la solution du problème soulevé pour votre l'atelier :  lors d'une mise à jour, le problème de la page blanche sur les modules news et blog n'était pas vraiment complètement corrigé, il faut donc y remédier au plus vite.
 

 

 

Coucou ! Je ne sais pas de quel problème de page blanche tu parles ni quelle obligation il y aurait subitement, mais tu as ci-dessus les trois fichiers pour le blog. Essaie-les, et s'ils conviennent, adapte-les aux news. :)

Partager ce message


Lien à poster
Partager sur d’autres sites
PeterRabbit    371

@Thipsy Ne vois aucune ironie dans mes propos, j'essaye juste de faire un peu d'humour, mais le support s'y prête peu. :)

 

Peu importe le problème d'encodage – je ne suis d'ailleurs pas sûr qu'il soit vraiment réglé – trouve autre chose et réalise-le. Ça va t'obliger à plonger dans le code et à chercher. Et peu à peu, tu comprendras... et tu pourras partager tes trouvailles.

 

Je pense que ce qui serait sympa, puisque tu as trouvé ce début facile (ce qu'il est, mais personne n'a répondu à ma question), c'est que tu nous confectionnes un plugin qui apporte une petite modification, fait selon cette technique et complet (installation et restauration). C'est pour ça que je vous demandais de réfléchir à un projet. Tu as la technique (enfin, une technique), propose-nous quelque chose.

 

Je relance une idée dont je crois déjà avoir parlé : ajouter une police sympa aux 27 déjà prévues pour faire le super titre qui te plairait. Fais-nous aussi le "Readme" qui nous explique.

 

Je suis comme mes anciens collègues profs de maths : parfois, ils pensaient que l'exo qu'il avaient donné sans l'avoir fait était facile... et ils ne savaient pas le faire !

 

Quant aux installations de scripts, c'est prévu, mais un peu plus tard. :)

Modifié par PeterRabbit

Partager ce message


Lien à poster
Partager sur d’autres sites
cybertaf    119
il y a 22 minutes, PeterRabbit a dit :

 

Coucou ! Je ne sais pas de quel problème de page blanche tu parles ni quelle obligation il y aurait subitement, mais tu as ci-dessus les trois fichiers pour le blog. Essaie-les, et s'ils conviennent, adapte-les aux news. :)

Cela n'a rien à voir avec l'encodeur JSON, il manquait deux modifs dans l'update 8.4.0 au niveau des pages config.
Le problème se situe au niveau du stockage de la variable du nombre d'articles par page. Après avoir effectué la mise à jour sur un site, j'ai constaté que le problème subsistait, une page blanche à la plage d'une page de news. Après investigation rapide, il a une erreur de typage dans le stockage de la variable et celle incluse dans la mise à jour au niveau du core.php
Normalement tout est ok, le type doit être int

Partager ce message


Lien à poster
Partager sur d’autres sites
Thispy    53

Je ne comprends pas trop le Markdown en ligne StackEdi.
Je regarderai plus en profondeur demain...
Normalement, je termine moins tard :S

 

Je vais voir comment fonctionne Markdown

https://blog.wax-o.com/2014/04/tutoriel-un-guide-pour-bien-commencer-avec-markdown/

https://blog.lesieur.name/stackeditio-l-editeur-markdown-en-ligne-par-excellence/

Modifié par Thispy
Info ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • Contenu similaire

    • Par PeterRabbit
      ATELIER #2
      Où les choses vont légèrement se compliquer...
       
       
       
       
      A la fin du premier atelier, je vous ai laissés sur une impression insatisfaisante : "Pourquoi nous enseigner quelque chose pour nous dire après que ce à quoi nous sommes laborieusement parvenus n'est pas la bonne méthode ? " – Pour préparer progressivement les compétences nécessaires à l'atelier #3 à venir...
      Mais pour l'instant nous n'en sommes qu'à l'atelier #2 : apprendre quelques rudiments de PHP pour réécrire ponctuellement les fichiers au lieu de les écraser, sans toucher au reste du code.

      Grâce à Google pour mes recherches et à l'incontournable volumineux manuel officiel de PHP, j'ai peu à peu appris à remplacer une ligne de code par une autre en utilisant ces quelques instructions :
      $file="core/layout/main.php";  $filecontent=file_get_contents($file); $replace=str_replace('<header', '<header class="img<?php echo rand(1, 6);?>"', $filecontent); file_put_contents($file, $replace); Ne vous laissez pas impressionner par le code de la troisième ligne, c'est juste pour vous donner un vrai exemple.
       
      Je vous commente les instructions :
      $file="core/layout/main.php";  On associe le fichier que l'on veut modifier à la variable $file.
       
      $filecontent=file_get_contents($file); On ouvre le fichier $file, on lit son contenu et on le place dans la variable $filecontent.
       
      $replace=str_replace('<header', '<header class="img<?php echo rand(1, 6);?>"', $filecontent); On remplace le code d'origine par le nouveau code dans $filecontent et on associe le contenu modifié à la variable $replace.
      La syntaxe de cette instruction est simple : str_replace('code à remplacer', 'modification à apporter', $filecontent);
       
      file_put_contents($file, $replace); On écrit le contenu modifié dans le fichier $file et on le referme.
      Et on répète cette opération autant de fois qu'il le faut en fonction du nombre de modifications à apporter et du nombre de fichiers concernés.

      NB : Il existe des techniques plus sophistiquées et plus condensées qui relèvent de ce qu'on appelle "codage" – merci à @EBS01 pour l'exemple qu'il me fournit très à propos ! 
      Mais puisque celle-ci donne de bons résultats, pourquoi la compliquer, d'autant que le débutant s'y retrouvera plus facilement et qu'on peut faire du copier-coller à partir d'une maquette qu'on conservera dans un coin de son disque dur ?
       
      Mise en pratique
      Cette technique de remplacement peut être utilisée pour corriger un code. Nous aurions pu ainsi corriger le bug d'encodage de cette façon au lieu de remplacer les fichiers. Mais on peut aussi l'employer pour ajouter du code à certains endroits. C'est ce que nous allons voir.
      Je vous propose de partir du travail pratique que je vous avais demandé et que @Thispy m'a envoyé. Nous allons ajouter une police aux 27 dont dispose Zwii. Bien sûr, il suffirait d'expliquer comment faire, vu qu'il n'y a qu'une ligne à ajouter. Mais ce n'est pas notre propos et  comme l'exemple est simple, il sera plus parlant.
       


      Une étude de l'arborescence de Zwii (cf ; "README.md") vous amènerait à constater la présence d'un répertoire "theme" parmi les "modules du cœur" de Zwii ("core/module") : vous vous doutez que c'est là que se définissent les différents paramètres qui entreront dans la composition de la feuille de style qui définit l'apparence de Zwii  ("site/data/theme.css").
       
      Rendez-vous dans ce répertoire et éditez le fichier "core/module/theme/theme.php".
       
      Il va s'agir d'ajouter la police "Display" par ordre alphabétique (@Thispy ) entre les polices "Dancing script" et "Droid sans".
       
      Procédons pas à pas :
      Créez un nouveau fichier texte sur votre bureau et copiez-collez le code que j'ai commenté : $file="core/layout/main.php";  $filecontent=file_get_contents($file); $replace=str_replace('<header', '<header class="img<?php echo rand(1, 6);?>"', $filecontent); file_put_contents($file, $replace); Copier-coller minimise les risques de "fautes d'orthographe" : si vous oubliez la moindre virgule, c'est fichu...
      Nous ne mettrons qu'une instruction par ligne pour que le code soit plus facile à lire et surtout à relire.
       
       
       
       
      Adaptons maintenant ces lignes à ce que nous voulons faire. Il suffit juste de changer le chemin et le nom du fichier (ligne 1) ainsi que le code à remplacer et la modification à apporter (ligne 3). Je vous montre, vous appliquerez ensuite : $file="core/module/theme/theme.php";  $filecontent=file_get_contents($file); $replace=str_replace(''Dancing+Script' => 'Dancing Script',', ''Dancing+Script' => 'Dancing Script',         'Display' => 'Display',', $filecontent); file_put_contents($file, $replace); La ligne 1 ne soulevant pas de questions, je vous explique le principe de la ligne 3.
      En fait, pour ajouter la police "Display" à cet endroit précis, on remplace la ligne de la police précédente ("Dancing script") par deux lignes : la ligne de la police "Dancing script" à laquelle on ajoute celle de la nouvelle police "Display", sans oublier le passage à la ligne entre les deux. J'ai aussi ajouté un espace au début de la nouvelle ligne pour respecter la présentation du code.
       
      Si j'ai été clair, vous avez compris qu'il faut chercher dans le script des repères précis pour s'en servir comme de points d'ancrage pour les modifications. C'est le principe des hooks (crochets) dans des CMS conçus pour recevoir de vrais plugins. On aurait d'ailleurs pu prendre appui sur la ligne suivante, celle de la police "Droid sans".
       
      Exercice : Réécrivez la ligne 3 pour faire ce que je viens de dire !
       
       
       
       
       
      Voilà, votre script est prêt !
      C'est bien joli tout ça, me direz-vous, mais comment faire pour l'exécuter ?
      On pourrait le placer dans un fichier spécifique, "display.php" par exemple, qu'on placerait sur le site et qu'on appellerait depuis son navigateur, mais je me suis dit que ce serait plus élégant de l'ajouter au fichier "index.php" à la racine du site de façon qu'il s'exécute juste avant que Zwii ne se lance.
       
      Mise en pratique
      Faites une copie du fichier "index.php" à la racine de la 8.45 que vous avez téléchargée pour cet atelier (on continue à travailler sur cette version) et placez-la sur votre bureau (elle s'appellera toujours "index.php"). Éditez-la. Copiez-collez vos quatre lignes de code au niveau de la ligne 22, juste après la vérification de la version de PHP. Faites-les précéder d'un petit commentaire. Vous avez le choix de la syntaxe : /* Ceci est un commentaire dans un fichier PHP ou dans une feuille de style css */ // Ceci est un commentaire dans un fichier PHP Comme ceci :
      <?php /**  * This file is part of Zwii.  *  * For full copyright and license information, please see the LICENSE  * file that was distributed with this source code.  *  * @author Rémi Jean <remi.jean@outlook.com>  * @copyright Copyright (C) 2008-2018, Rémi Jean  * @license GNU General Public License, version 3  * @link http://zwiicms.com/  */ /**  * Vérification de la version de PHP  */ if(version_compare(PHP_VERSION, '5.6.0', '<')) {     exit('PHP 5.6+ required.'); } /* Installation de la police Display */ Vos quatre lignes de code [...] Enregistrez votre fichier et copiez-le à la racine de votre site d'essais. Validez le remplacement que vous propose Filezilla. Tatatan ! Le verdict va tomber : connectez-vous à votre site ou rafraîchissez la page d'accueil.  
      En fait, c'est plutôt le couperet qui est tombé 
      Parse error: syntax error, unexpected 'Dancing' (T_STRING) in /home/thgfrfo/public_html/8.45tp/index.php on line 25
      Une erreur d'interprétation du code due à une faute de syntaxe a bloqué le lancement de Zwii.
       
      Ne vous fiez pas aux explications des messages d'erreur, elles n'identifient pas toujours/souvent la cause première du problème. Dans le cas présent, ce n'est pas le "Dancing" qui est responsable du blocage, mais une erreur d'interprétation du code due à un petit détail que je vais vous expliquer.
       
      J'en profite pour vous conseiller d'utiliser un éditeur à coloration syntaxique (NotePad++ sur Windows ou Linux, ou Geany sur Linux par exemple – désolé, je n'ai pas croqué la pomme... 
       
       
       
       
      Ce qui aurait dû attirer votre regard, c'est que les parties de la ligne comprises entre des apostrophes sont en noir (sur Geany), couleur réservée aux instructions PHP. C'est donc là qu'est le problème.
      En effet, pour certains caractères, il faut expliquer à l'interpréteur PHP qu'il doit les considérer comme des caractères à écrire dans un fichier, et pas comme une partie d'une instruction à exécuter. Suis-je clair ? 
      Pour cela, il faut les faire précéder d'un antislash (Alt Gr 8). En jargon, on appelle cela "échapper" un caractère.
      Parmi ces caractères, il y a justement l'apostrophe dont votre ligne 3 fait un grand usage.
      Vous allez donc "échapper" ces apostrophes, mais pas toutes ! Celles qui encadrent la ligne à remplacer ou les deux lignes de remplacement appartiennent au script !
       
      Pour cette tâche, vous pouvez travailler indifféremment sur votre bureau ou en éditant le fichier en ligne.
      Faites précéder la première apostrophe 'Dancing d'un antislash, comme ceci : \'Dancing. Miracle, la suite se colore en orange... mais le problème se décale d'une apostrophe... Échappez donc une à une les 11 apostrophes restantes.  Cette fois, la ligne a une couleur plus homogène et vous voyez bien les deux virgules qui structurent le code.
      $replace=str_replace('\'Dancing+Script\' => \'Dancing Script\',', '\'Dancing+Script\' => \'Dancing Script\',         \'Display\' => \'Display\',', $filecontent); Au passage, ce travail de bénédictin vous a peut-être fait prendre conscience qu'il aurait été plus rapide d'échapper les apostrophes du code à remplacer, de copier ce code "échappé", puis d'ajouter la seconde ligne...
       
       
       
       
      Opérez le remplacement du fichier "index.php" de votre site, soit en le copiant à nouveau, soit en enregistrant les modifications avec Filezilla. Rafraîchissez la page. Ça marche, Zwii se lance !  
      Et si nous allions vérifier la bonne exécution de notre réécriture ?
      Éditez le fichier "core/module/theme/theme.php" de votre site.
      Bravo, la police "Display" apparaît à la ligne 44, entre "Dancing script" et "Droid Sans" ! 
      Et mince ! Elle y est deux fois ! 
      Eh oui, aussi bizarre que ça puisse paraître, même si votre erreur de syntaxe avait bloqué le lancement de Zwii, le script s'était pourtant exécuté et le remplacement avait été fait !
       
      Vous voyez donc que notre technique n'est pas parfaite  : si nous avions corrigé une ligne de code,  à la seconde exécution le script n'aurait plus trouvé le texte à remplacer. Mais dans le cas présent, la ligne qui sert d'ancrage est toujours là, et on la multiplierait à chaque connexion au site.
       
      La solution au prochain épisode ?
      Nous avons bien travaillé.
       
      J'ai oublié de donner le travail à faire !
      Envoyez-moi par MP un fichier "index.php" qui installe la police "Permanent Marker" en utiisant la technique que vous avez apprise.
      Indice : Zwii se fait livrer ses polices par Google Fonts.