Aller au contenu
Communauté Zwii et Yocto

sylvainlelievre

Membres
  • Compteur de contenus

    12
  • Inscription

  • Dernière visite

Réputation sur la communauté

5 Neutre

À propos de sylvainlelievre

  • Rang
    Apprenti

Informations personnelles

  1. sylvainlelievre

    Recherche dans le site

    Actuellement un modulecode s'affiche dans un Iframe (c'est codé dans module/code/code.php), c'est ce que j'aurais aimé éviter, si possible... Merci @cybertaf
  2. sylvainlelievre

    Recherche dans le site

    Bonjour Cybertaf, Merci pour ta réponse, ça marche nickel et ça prouve en effet le bien fondé de ce nouveau module code, qui va ouvrir des possibilités de développement. Entretemps j'étais arrivé au même résultat mais en plaçant le formulaire et le script de recherche dans la même page (voir pièce jointe). ça revient au même résultat mais ta solution est plus structurée (il me restait à recharger les feuilles de style). Pour aller plus loin au niveau du module code : ne pourrait-on pas éviter de l'ouvrir dans un iframe ? on perd les mises en forme du site et puis ces ascenseurs !... + il y a la nécessité d'être déconnecté pour activer les pages associées à un module code (sinon on passe en page edit). Pour le module recherche, si c'est dans mes possibilités, pourquoi pas, mais là je vais être absent 15 jours. Merci @cybertaf Et encore bravo pour ce gros travail de développement de la version 9 ! recherche_version9.php
  3. Bonjour,

    J'ai répondu dans le fil de mon article sur le module recherche.

    1. cybertaf

      cybertaf

      Bonjour Sylvain
      Je traite ta réponse.

  4. sylvainlelievre

    Recherche dans le site

    Bonjour Cybertaf, J'ai monté rapidement une version 9. En testant mon script de façon basique (avec ouverture de la page recherche.php "hors du site" le changement de nom data.json vers core.json ne pose pas de problème, ça détecte bien les occurences dans les pages, les pages enfant et les blogs (pas testé dans d'autres modules). Par contre l'essai comme proposé dans ton message n'a pas fonctionné. Dans la partie php de mon fichier j'ai remplacé data.json par core.json, supprimé l'entête html. J'ai créé une page de type module code pointant vers le script php. Le gestionnaire de fichier a placé mon fichier recherche.php dans un dossier code, j'ai mis dans ce dossier une copie de core.json. J'ai créé un formulaire sur la page d'accueil qui pointe vers la page contenant le module code. La page recherche.php s'ouvre bien ( et c'est vrai qu'à l'intérieur du site c'est plus fun) mais le mot clef (ou phrase clef) ne passe pas, la page php reçoit une chaîne vide. Bref je n'arrive pas à passer le contenu du formulaire vers le script php. Plus un truc bizarre : quand je suis connecté et que je test la recherche, la page contenant le module code s'ouvre en mode édtition au lieu de s'exécuter. Merci pour strip-tags.php, j'ai réinventé la roulette.... Ce module code ouvre de superbes perspectives mais soit je ne sais pas m'en servir, soit il y a un bug. A suivre, mais je vais être absent 15 jours
  5. Bonjour, Voici un module de recherche qui exploite le fichier data.json d'un site ZWII (testé sous 8.5.9) pour chercher des occurences dans toutes les pages du site. Il est constitué d'un seul fichier php et agrémenté d'une image de fond pour le rendu. Plus de détails dans l'entête du fichier recherche.php Vous aurez un aperçu du rendu en allant sur la page d'accueil du site https://www.halteauxmareesvertes.org (bas de page) <!-- Recherche des pages contenant un mot ou une phrase clef à partir du fichier data.json Une portion du texte contenant le mot ou la phrase clef est affichée pour chaque occurence rencontrée Le nombre d'occurence dans une page est indiqué. Dans le mot ou la phrase clef la casse est indifférente, les accents sont pris en compte. Testé avec ZWII 8.5.9 Sont à regrouper dans un dossier ce fichier recherche.php, loupe.jpg, data.json (une copie de votre data.json) et un .htaccess Un formulaire POST placé dans une des pages ZWII pointe sur ce fichier <form action="/....../recherche.php" method="post">Recherche : <input name="motclef" size="10" type="text" /> <input type="submit" value="valider" /></form> --> <head> <title>Recherche</title> <link rel="stylesheet" href="/site/data/theme.css"> <link rel="stylesheet" href="/site/data/custom.css"> </head> <body style="background-image:url(loupe.jpg);"> <?php //Déclaration de la fonction nettoyer(string $contenu) : string //Supprime de $contenu les caractères placés entre < et >, donc les balises html comme <p> <br/> etc... //Retourne $contenu nettoyée function nettoyer_html($contenu) { do { $pos1=strpos($contenu,chr(60)); if($pos1!==false) { $pos2=strpos($contenu,chr(62)); if($pos2!==false) $contenu=substr_replace($contenu," ",$pos1,($pos2 - $pos1 + 1)); } } while($pos1!==false); return $contenu; } // Récupération de l'ensemble des données d'un site ZWII 8.x.x // On utilise une copie du fichier data.json, manuelle car avec .htaccess impossible d'utiliser copy // Lire le fichier json $json_source = file_get_contents('data.json'); // Décoder le JSON en un array $array = json_decode($json_source,true); // Récupération du mot clef passé par form avec caractères accentués $motclef=$_POST['motclef']; echo '<h1>R&eacute;sultats de la recherche avec le mot clef : '.$motclef.'<br/></h1>'; if ($motclef!="" && strlen($motclef)>2) { foreach ($array as $key1 => $value1) { // Déterminer le chemin de tous les contenus (content) dans page ou module if (($key1=='page' || $key1=='module') && is_array($value1) ) { foreach ($value1 as $key2 => $value2) { if (is_array($value2)) { foreach ($value2 as $key3 => $value3) { if ($key3=="content" && is_string($value3)) { // compte le nombre d'occurences dans la page $nboccu=0; // le contenu à explorer est dans $value3, le nom de la page est $key2 //Nettoyage de $value3 : on enlève tout ce qui est inclus entre < et > $value3=nettoyer_html($value3); //accentuation $value3=html_entity_decode($value3); // Recherche et affichage des occurences do { $occu = stristr($value3,$motclef); if ($occu!="") { if ($key2!=$dejavu) echo '<p><br/>Mot clef trouv&eacute; dans la page : <a href="/?'.$key2.'">'.$key2.'</a><br/></p>'; $dejavu=$key2; $nboccu++; //Affichage d'un extrait de $value3 echo '<p>'.$nboccu.' - "...<em>'.substr($occu,0,200).'</em>..."<br/></p>'; //pour recherche d'une autre occurence dans le même contenu $value3=substr($occu,100); } } while($occu!=""); $dejavu=""; $nboccu=0; } elseif ($key1 == "module" && is_array($value3)) { foreach ($value3 as $key4 => $value4) { if ($key4=="content" && is_string($value4) ) { $nboccu=0; // le contenu à explorer est dans $value4, le nom du module/page est $key2/$key3 //Nettoyage de $value4 : on enlève tout ce qui est inclus entre < et > $value4=nettoyer_html($value4); //accentuation $value4=html_entity_decode($value4); // Recherche et affichage des occurences do { $occu = stristr($value4,$motclef); if ($occu!="") { if ($key3!=$dejavu) echo '<p><br/>Mot clef trouv&eacute; dans la page : <a href="/?'.$key2.'/'.$key3.'">'.$key2.'/'.$key3.'</a><br/></p>'; $dejavu=$key3; $nboccu++; echo '<p>'.$nboccu.' - "...<em>'.substr($occu,0,200).'</em>..."<br/></p>'; } //pour recherche d'une autre occurence dans le même contenu $value4=substr($occu,100); } while($occu!=""); $dejavu=""; $nboccu=0; } } } } } } } } } else echo '<p><br/>Trop court ! minimum 3 caract&egrave;res</p>'; echo '<br/><br/><br/>'; ?> </body></html> recherche.php
  6. sylvainlelievre

    ajout de fonctionnalités

    Bonjour, J'ai pas mal avancé sur ma page de recherche, je déplace le sujet dans "bouts de code".
  7. sylvainlelievre

    ajout de fonctionnalités

    A la question : " de ton côté @Sylain comment est trouvée / restituée la racine pour l'URL ? " C'est le contenu de $_SERVER['SERVER_NAME'] A suivre...
  8. sylvainlelievre

    ajout de fonctionnalités

    Bonjour @windoxs@free.fr C'est bizarre, ça marche sur mon site. Problème dans mon href probablement... Pour info mon site est "sans réécriture d'URL" dans sa configuration
  9. sylvainlelievre

    ajout de fonctionnalités

    Bonjour, J'ai fait évoluer ma page de recherche, elle trouve maintenant automatiquement les chemins des contenus : <html lang="fr"> <head> <meta charset="utf-8"> <title>Recherche</title> <link rel="stylesheet" href="/site/data/theme.css"> <link rel="stylesheet" href="/site/data/custom.css"> </head> <body style="background-image:url(loupe.jpg);"> <?php /* Recherche des pages contenant un mot ou une phrase clef à partir du fichier data.json Limitation : le mot ou la phrase clef est également détecté dans les liens, les images de la page, dans tout le code source de la page A faire : déterminer et afficher le nombre d'occurences dans la page Sont regroupés dans un dossier ce fichier recherche.php, loupe.jpg, data.json (copie) Un formulaire POST placé dans une des pages ZWII pointe sur ce fichier <form action="/test/recherche/recherche.php" method="post">Recherche : <input name="motclef" size="10" type="text" /> <input type="submit" value="valider" /></form> */ // On utilise une copie du fichier data.json, manuelle car avec .htaccess impossible d'utiliser copy // Lire le fichier json $json_source = file_get_contents('data.json'); // Décoder le JSON en un array $array = json_decode($json_source,true); // Récupération du mot clef $motclef=$_POST['motclef']; echo '<h1>R&eacute;sultats de la recherche avec le mot clef : '.$motclef.'<br/>'.'<br/></h1>'; if ($motclef!="") { foreach ($array as $key1 => $value1) { // Déterminer le chemin de tous les contenus (content) dans page ou module //echo $key1.' : '.$value1.'<br/>'; if (($key1=='page' || $key1=='module') && is_array($value1) ) { foreach ($value1 as $key2 => $value2) { //echo $key1.' * '.$key2.' * '.$value2.'<br/>'; if (is_array($value2)) { foreach ($value2 as $key3 => $value3) { //echo $key1.' - '.$key2.' - '.$key3.' - '.$value3.'<br/>'; if ($key3=="content" && is_string($value3)) { // le contenu à explorer est dans $value3, le nom de la page est $key2 // Recherche et affichage des occurences $occu = stristr($value3,$motclef); if ($occu!="") { echo '<p>Mot clef trouv&eacute; dans la page : <a href="/?'.$key2.'">'.$key2.'</a><br/><br/></p>'; } } elseif ($key1 == "module" && is_array($value3)) { foreach ($value3 as $key4 => $value4) { //echo $key1.' ; '.$key2.' ; '.$key3.' ; '.$key4.' ; '.$value4.'<br/>'; if ($key4=="content" && is_string($value4) ) { // le contenu à explorer est dans $value4, le nom du module page est $key2/$key3 // Recherche et affichage des occurences $occu = stristr($value4,$motclef); if ($occu!="") { echo '<p>Mot clef trouv&eacute; dans la page : <a href="/?'.$key2.'/'.$key3.'">'.$key2.'/'.$key3.'</a><br/><br/></p>'; } } } } } } } } } } ?> </body></html> A suivre... recherche.php
  10. sylvainlelievre

    ajout de fonctionnalités

    Bonjour, J'ai commencé à bricoler un moteur de recherche interne au site, qui pour le moment donne ça (voir image jointe). J'ai installé un formulaire POST sur une page Zwii et j'utilise le fichier data.json pour rechercher une occurence avec un mot ou une phrase clef. Voici le code de la page php associée au formulaire : html lang="fr"> <head> <meta charset="utf-8"> <title>Recherche</title> <link rel="stylesheet" href="https://www.................../site/data/theme.css"> <link rel="stylesheet" href="https://www................../site/data/custom.css"> </head> <body style="background-image:url(loupe.jpg);"> <?php // Recherche des pages contenant un mot clef // j'utilise une copie du fichier data.json placée manuellement dans le répertoire de ce fichier, car avec .htaccess impossible d'utiliser copy // Lire le fichier json $json_source = file_get_contents('data.json'); // Décode le JSON $json_data = json_decode($json_source); // Récupération du mot clef $motclef=$_POST['motclef']; echo '<h1>R&eacute;sultats de la recherche avec le mot clef : '.$motclef.'<br/>'.'<br/></h1>'; if ($motclef!="") { // Déclaration des noms de page du site en attendant mieux, minuscules et l'espace remplacé par un tiret $pages=array("accueil","contact","photos","ca","vivre-ici","nos-digues","adherents","journal-de-bord","zone-rouge","en-bref","mentions"); $taille=count($pages); // Recherche et affichage des occurences for ($i = 0; $i < $taille; $i++) { $contenu = $json_data->{"page"}->{$pages[$i]}->{"content"}; $occu = stristr($contenu,$motclef); if ($occu!="") { echo '<p>Mot clef trouv&eacute; dans la page : <a href="/?'.$pages[$i].'">'.$pages[$i].'</a><br/><br/></p>'; } } } // A faire pour les modules blog : $json_data->{"module"}->{$blog[$i]}->{$article[$j]}->{"content"} // News et pour les pages enfant... ?> </body></html> voici le code source du formulaire : <form action="/test/recherche/lirejson.php" method="post">Recherche : <input name="motclef" size="10" type="text" /> <input type="submit" value="valider" /></form>
  11. Bonjour, Tout d'abord un grand bravo pour votre CMS et son suivi. Mon objectif était de faire un compteur de visites indépendant et surtout sans rentrer dans le core de zwii, vues les très nombreuses mises à jour. Le principe est le suivant : Insérer sur la page du site ZWII (avec tinymce) une image avec un lien vers une page php (voir 2 - ). Cette page php contient un compteur de visites et une image SVG contenant la valeur du compteur, c'est cette image qui est renvoyée et qui s'affichera sur votre page. Rien d'original, mais si ça peut rendre service... On pourrait d'ailleurs avec ce principe renvoyer d'autres choses que la valeur d'un compteur ! 1 - créer et uploader sur son site le fichier compteur.php suivant : <?php header('Content-type: image/svg+xml'); /*Compteur de visites*/ /*Compteur de visites (http://www.supportduweb.com/scripts_tutoriaux-code-source-65-php-compteur-de-visites-scripts-php.html) */ session_start(); if(file_exists('compteur_visites.txt')) { $compteur_f = fopen('compteur_visites.txt', 'r+'); $compte = fgets($compteur_f); } else { $compteur_f = fopen('compteur_visites.txt', 'a+'); $compte = 0; } if(!isset($_SESSION['compteur_de_visite'])) { $_SESSION['compteur_de_visite'] = 'visite'; $compte++; fseek($compteur_f, 0); fputs($compteur_f, $compte); } fclose($compteur_f); /*Retourne une image SVG contenant la valeur du compteur */ /*A FAIRE la mise en forme du text */ echo '<?xml version="1.0" encoding="utf-8"?>'; echo '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" width="200" height="30"> <text text-anchor="middle" fill="green" x="50%" y="100%" font-size="30" font-weight="normal" font-family="Oswald,Verdana, Arial, Helvetica"> '.$compte.' </text> </svg> '; ?> 2 - Sur la page d'accueil il ne reste plus qu'à insérer une "image" avec le bon lien, ce qui donnera en version source quelque chose comme ça : <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://abcdefghjkl.fr/test/compteur.php" width="200" /></p> Et hop ! tout a été copié par ci par là sur le web, merci aux contributeurs. Et bonne année à toute l'équipe Si vous voulez voir le rendu, c'est en bas de la page d'accueil du site https://www.halteauxmareesvertes.org compteur.php
  12. sylvainlelievre

    Taille des polices

    Merci pour votre rapidité ! J'ai donc supprimé la ligne fontsize_formats de mon core/vendor/tinymce/init.js Pour ne garder que fontsizeselect dans la partie toolbar de ce fichier Init-js en pièce jointe Je n'ai pas ajouté fontselect car je trouve que pour garder une unité au site (surtout quand on est plusieurs rédacteurs) c'est bien de centraliser le réglage des polices comme vous l'avez pensé. PS : je n'ai pas encore testé la deuxième solution. Merci encore init.js
  13. sylvainlelievre

    Taille des polices

    Bonjour, Je voudrais ajouter dans l'éditeur tinymce un réglage de la taille des polices. J'ai modifié le fichier core/vendor/tinymce/init.js en ajoutant : dans toolbar : fontsizeselect puis fontsizeformats :"8pt, 10pt, 12pt, 14pt, 16pt, 20pt, 36pt", (j'ai essayé avec ou sans les virgules séparatrices entre les nombres de points, avec px à la place de pt) Le sélecteur de police apparaît dans tinymce, il insert bien les balises <font size...> et </font> Mais la valeur de font size est toujours fixée à 0, quelque soit le réglage choisi : <font size="0"> je joins le fichier init.js modifié et une copie d'écran du tinymce modifié. Avez-vous une idée de ce qu'il faut faire pour régler ce problème ? Merci d'avance et bravo pour la clarté de votre CMS, très agréable à utiliser. init.js
×