Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'confectionner un plugin'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Annonces
    • Règlement du forum
    • Informations et nouveautés
  • Support de Zwii
    • Bugs, questions et tests
    • Suggestions
    • Version de développement
  • Communauté
    • Vos sites sous Zwii
    • Support des téléchargements
    • Tutoriels et bouts de code

Catégories

  • Versions officielles en beta
  • Versions non officielles
  • Modules
  • Modifications et astuces

2 résultats trouvés

  1. 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.
  2. 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.