Blog ou CMS à l'Xml
Vous n'êtes pas identifié.
Je viens de rajouter sur le wiki, le code nécessaire pour ajouter un moteur de recherche à partir d'une page statique
http://wiki.pluxml.org/?page=Ajouter%20 … 20statique
Stéphane
En ligne
Arf c'est le wiki qui pose problème. quand on fait un copier coller du code et qu'on enregistre, il y a des caractères qui dégagent.
J'essaye de corriger ça
En ligne
Voilà ça devrait etre bon
En ligne
C'est nikel et rapide en plus.
J'ai fais le test sur mon blog avec 77 articles et le mot clé photo j'ai eu le résultat en même pas 1 seconde et mon serveur a à peine réagis.
Manque plus qu'a intégrer le formulaire directement dans la sidebar ![]()
Editer le fichier sidebar.php et ajouté le code
<div>
<h2>Rechercher</h2>
<form method="post" id="searchform" action="<?php echo PLX_ROOT ?>?static5/rechercher">
<input type="hidden" name="search" value="search" />
<input type="text" class="searchfield" name="searchfield" value="Rechercher..." onblur="if(this.value=='') this.value='Rechercher...';" onfocus="if(this.value=='Rechercher...') this.value='';" />
<input type="submit" class="searchbutton" value="Go" />
</form>
</div>Il faut personnaliser l'adresse du formulaire :
<form method="post" id="searchform" action="<?php echo PLX_ROOT ?>?static5/rechercher">
Remplacer : static5/rechercher par l'adresse de votre page static qui contient le formulaire de recherche.
Dernière modification par flipflip (28-08-2009 12:37:10)
Hors ligne
ah merci,
Qu'elle serait l'approche pour paginer les resultats de recherche sur de gros blog ?
Sinon , les problémes qui avait etait rencontrés etait sur un blog de plusieurs centaines d'articles (+580)bien fourni , et sur un hebergement ovh . http://forum.pluxml.org/viewtopic.php?pid=8740#p8740
Sur des blog pluxml d'une centaine d'article il y a peu de risque de voir le serveur renvoyé une page d'erreur , enfin sur free et aux heures de pointes , tout peut (ne pas) arriver ![]()
++
Hors ligne
Effectivement on pourrait alléger les traitement avec une pagination histoire de ne pas traiter et afficher plus de 500 articles. Une 50taine de résultats par page serait surement un bon compris.
Dès que je peux je fais cette amélioration.
Merci gcyrillus pour l'idée et la suggestion
Stéphane
En ligne
Bonjour
Voilà une nouvelle solution qui apporte en plus un affichage avec une pagination de 25 articles par page
<?php
if(!defined('PLX_ROOT')) exit;
global $plxShow;
if (!empty($_POST['searchfield']) OR !empty($_GET['search'])) {
$bypage = 25;
$start = empty($_GET['start']) ? 1 : (intval($_GET['start']));
$plxGlob_arts = & new plxGlob(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles']);
$aFiles = $plxGlob_arts->query('/[0-9]{4}.([0-9]{3}|home).[0-9]{12}.[a-z0-9-]+.xml$/','search','rsort', $start-1, $bypage+1);
if(is_array($aFiles)) { # On a des fichiers
ob_start();
$counter = 0;
$searchword = strtolower(!empty($_GET['search']) ? urldecode($_GET['search']) : $_POST['searchfield']);
while(list($k,$v) = each($aFiles)) { # On parcourt tous les fichiers
$art = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles'].$v);
$searchstring = strtolower(addslashes($art['title'].$art['chapo'].$art['content']));
if (substr_count($searchstring,$searchword) > 0) {
$art_num = intval($art['numero']);
$art_url = htmlspecialchars($art['url'],ENT_QUOTES,PLX_CHARSET);
$art_title = htmlspecialchars($art['title'],ENT_QUOTES,PLX_CHARSET);
$art_date = substr($art['date'], 8, 2).'/'.substr($art['date'], 5, 2).'/'.substr($art['date'], 0, 4);
if ($counter < $bypage)
echo '<li>'.$art_date.': <a href="'.$plxShow->plxMotor->aConf['racine'].'?article'.$art_num.'/'.$art_url.'">'.$art_title.'</a></li>';
$counter++;
}
}
$content = ob_get_clean();
if ($counter > 0) {
echo '<p>Résultat(s) de la recherche.<br /><ul class="search_results">'.$content.'</ul></p>';
if ($counter > ($bypage))
echo '<p><a href="'.PLX_ROOT.'?'.plxUtils::getGets().'&start='.($start+$bypage).'&search='.urlencode($searchword).'">Page suivante</a></p>';
if ($start >= $bypage)
echo '<p><a href="'.PLX_ROOT.'?'.plxUtils::getGets().'&start='.($start-$bypage).'&search='.urlencode($searchword).'">Page précedente</a></p>';
}
else
echo '<p>Aucun résultat pour <strong>'.$searchword.'</strong></p>';
echo '<p>Faire une nouvelle recherche</p>';
}
}
?>
<form method="post" id="searchform" action="<?php echo PLX_ROOT.'?'.plxUtils::getGets() ?>">
<p class="searchform">
<input type="hidden" name="search" value="search" />
<input type="text" class="searchfield" name="searchfield" value="Rechercher..." onblur="if(this.value=='') this.value='Rechercher...';" onfocus="if(this.value=='Rechercher...') this.value='';" />
<input type="submit" class="searchbutton" value="Go" />
</fieldset>
</p>
</form>Il suffit de faire un copier/coller du code dans une page statique pour tester le script.
J'en appelle aux personnes qui ont des blogs volumineux pour savoir si les temps de traitements sont raisonnables et si tout fonctionne bien
Merci d'avance
Stéphane
En ligne
Bonjour,
Je viens de tester le dernier script pour voir s'il résolvait le prb des accents mais toujours le même problème
J'ai une version toute fraîche en 4.1.1 chez OVH et la recherche avec des accents ne donne rien
Une idée ?
Cordialement
Fabrice
Hors ligne
Stephane a écrit:
Bonjour
Voilà une nouvelle solution qui apporte en plus un affichage avec une pagination de 25 articles par pageCode:
<?php if(!defined('PLX_ROOT')) exit; global $plxShow; if (!empty($_POST['searchfield']) OR !empty($_GET['search'])) { $bypage = 25; $start = empty($_GET['start']) ? 1 : (intval($_GET['start'])); $plxGlob_arts = & new plxGlob(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles']); $aFiles = $plxGlob_arts->query('/[0-9]{4}.([0-9]{3}|home).[0-9]{12}.[a-z0-9-]+.xml$/','search','rsort', $start-1, $bypage+1); if(is_array($aFiles)) { # On a des fichiers ob_start(); $counter = 0; $searchword = strtolower(!empty($_GET['search']) ? urldecode($_GET['search']) : $_POST['searchfield']); while(list($k,$v) = each($aFiles)) { # On parcourt tous les fichiers $art = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles'].$v); $searchstring = strtolower(addslashes($art['title'].$art['chapo'].$art['content'])); if (substr_count($searchstring,$searchword) > 0) { $art_num = intval($art['numero']); $art_url = htmlspecialchars($art['url'],ENT_QUOTES,PLX_CHARSET); $art_title = htmlspecialchars($art['title'],ENT_QUOTES,PLX_CHARSET); $art_date = substr($art['date'], 8, 2).'/'.substr($art['date'], 5, 2).'/'.substr($art['date'], 0, 4); if ($counter < $bypage) echo '<li>'.$art_date.': <a href="'.$plxShow->plxMotor->aConf['racine'].'?article'.$art_num.'/'.$art_url.'">'.$art_title.'</a></li>'; $counter++; } } $content = ob_get_clean(); if ($counter > 0) { echo '<p>Résultat(s) de la recherche.<br /><ul class="search_results">'.$content.'</ul></p>'; if ($counter > ($bypage)) echo '<p><a href="'.PLX_ROOT.'?'.plxUtils::getGets().'&start='.($start+$bypage).'&search='.urlencode($searchword).'">Page suivante</a></p>'; if ($start >= $bypage) echo '<p><a href="'.PLX_ROOT.'?'.plxUtils::getGets().'&start='.($start-$bypage).'&search='.urlencode($searchword).'">Page précedente</a></p>'; } else echo '<p>Aucun résultat pour <strong>'.$searchword.'</strong></p>'; echo '<p>Faire une nouvelle recherche</p>'; } } ?> <form method="post" id="searchform" action="<?php echo PLX_ROOT.'?'.plxUtils::getGets() ?>"> <p class="searchform"> <input type="hidden" name="search" value="search" /> <input type="text" class="searchfield" name="searchfield" value="Rechercher..." onblur="if(this.value=='') this.value='Rechercher...';" onfocus="if(this.value=='Rechercher...') this.value='';" /> <input type="submit" class="searchbutton" value="Go" /> </fieldset> </p> </form>Il suffit de faire un copier/coller du code dans une page statique pour tester le script.
J'en appelle aux personnes qui ont des blogs volumineux pour savoir si les temps de traitements sont raisonnables et si tout fonctionne bien
Merci d'avance
Stéphane
J'ai bien reçu ton appel. ![]()
J'ai installé ton nouveau code sur cette page : http://www.customtaro.fr/blog/?static2/rechercher
Et comment dire... Ca déconne...
Temps de chargement hyper court mais la critère de recherche, je vois pas du tout comment elle marche... ![]()
Vieux articles, pas du tout le mot clé dans le titre, bref c'est bizarre...
Hors ligne
Hamtaro a écrit:
J'ai bien reçu ton appel.
J'ai installé ton nouveau code sur cette page : http://www.customtaro.fr/blog/?static2/rechercher
Et comment dire... Ca déconne...
Temps de chargement hyper court mais la critère de recherche, je vois pas du tout comment elle marche...
Vieux articles, pas du tout le mot clé dans le titre, bref c'est bizarre...
Je viens de faire quelques tests sur ton site. ça n'a pas l'air de trop déconner.
La recherche se fait dans le titre, le chapo et le contenu.
Pour quelques critères de recherche, j'ai eu les bons résultats.
Peux-tu me donner des exemples qui ne marcheraient pas stp
En ligne
vidub2001 a écrit:
Bonjour,
Je viens de tester le dernier script pour voir s'il résolvait le prb des accents mais toujours le même problème
J'ai une version toute fraîche en 4.1.1 chez OVH et la recherche avec des accents ne donne rien
Une idée ?
Cordialement
Fabrice
Bonjour Fabrice
Alors les problèmes des accents...
Je vais regarder ça car les accents sont peut etre convertis dans leur équivalent html quelque part.
é donne é donc du coup il n'y pas de résultat dans la recherche
En ligne
Stephane a écrit:
Hamtaro a écrit:
J'ai bien reçu ton appel.
J'ai installé ton nouveau code sur cette page : http://www.customtaro.fr/blog/?static2/rechercher
Et comment dire... Ca déconne...
Temps de chargement hyper court mais la critère de recherche, je vois pas du tout comment elle marche...
Vieux articles, pas du tout le mot clé dans le titre, bref c'est bizarre...Je viens de faire quelques tests sur ton site. ça n'a pas l'air de trop déconner.
La recherche se fait dans le titre, le chapo et le contenu.
Pour quelques critères de recherche, j'ai eu les bons résultats.
Peux-tu me donner des exemples qui ne marcheraient pas stp
En tapant Hamtaro, je n'ai pas mon dernier article dedans. ![]()
En tapant Jamendo, je n'ai rien alors que j'ai plusieurs articles intitulé Découverte Jamendo.
Hors ligne
Ok Hamtaro
J'ai compris ce qui ne va pas dans la façon de faire avec la pagination
Bon ben y a plus qu'à trouver une solution
Je vais m'y atteler
En ligne
Stephane a écrit:
vidub2001 a écrit:
Bonjour,
Je viens de tester le dernier script pour voir s'il résolvait le prb des accents mais toujours le même problème
J'ai une version toute fraîche en 4.1.1 chez OVH et la recherche avec des accents ne donne rien
Une idée ?
Cordialement
FabriceBonjour Fabrice
Alors les problèmes des accents...
Je vais regarder ça car les accents sont peut etre convertis dans leur équivalent html quelque part.
é donne é donc du coup il n'y pas de résultat dans la recherche
Bonjour,
Pour les accents , ce n'est pas trés clair . ...
http://fr2.php.net/manual/fr/function.htmlentities.php
(voir aussi http://fr2.php.net/manual/fr/function.h … lchars.php )
sur : gcyrillus.com/zaicha , pour faire passer les accents :
je fais :
$chaine_a_rechercher =htmlentities($chaine_a_rechercher,ENT_NOQUOTES,PLX_CHARSET);
sans me préoccupper de l'encodage des champs des fichiers xml des articles .
Les articles sont edité par fckeditor . et cela fonctionne autant en ligne qu'en local , sur une admin sans editeur , cela ne semble pas toujours fonctionné ...
GC
<edit> ... en principe appliqué a $_P0ST , htmentities() convient au passage d'accents dans la recherche .
$searchword = strtolower(!empty($_GET['search']) ? urldecode($_GET['search']) : htmlentities($_POST['searchfield'],ENT_NOQUOTES,PLX_CHARSET));
</>
Dernière modification par gcyrillus-nomade (02-09-2009 15:58:50)
Hors ligne
Hamtaro a écrit:
En tapant Hamtaro, je n'ai pas mon dernier article dedans.
rebonjour,
a modifier :
{
if ($counter > 0) {
echo '<p>Résultat(s) de la recherche.<br /><ul class="search_results">'.$content.'</ul></p>';
if ($counter > ($bypage))
echo '<p><a href="'.PLX_ROOT.'?'.plxUtils::getGets().'&start='.($start+$bypage).'&search='.urlencode($searchword).'">Page suivante</a></p>';
if ($start >= $bypage)
echo '<p><a href="'.PLX_ROOT.'?'.plxUtils::getGets().'&start='.($start-$bypage).'&search='.urlencode($searchword).'">Page précedente</a></p>';
}par
{
echo '<p>Résultat(s) de la recherche.<br /><ul class="search_results">'.$content.'</ul></p>';
if ($counter > ($bypage-1))
echo '<p><a href="'.PLX_ROOT.'?'.plxUtils::getGets().'&start='.($start+$bypage).'&search='.urlencode($searchword).'">Page suivante</a></p>';
if ($start >= $bypage+1)
echo '<p><a href="'.PLX_ROOT.'?'.plxUtils::getGets().'&start='.($start-$bypage).'&search='.urlencode($searchword).'">Page précedente</a></p>';
}GC
Hors ligne
Bonjour gcyrillus,
Merci pour l'info, maintenant, c'est OK ! :-)
Cordialement
Fabrice
Dernière modification par vidub2001 (02-09-2009 16:57:13)
Hors ligne
Bonjour à tous,
J'utilise, en local, Pluxml en version 4.3.1.
En reprenant les informations données par Stéphane au niveau du Wiki, mais aussi au niveau de ce fil, j'ai un problème d'accents lors de la restitution.
En cherchant des informations par ce mot clé "Coopérative", le moteur de recherche interne me donne le résultat suivant :
"Aucun résultat pour coop�rative"...
Un autre test avec "Chèques" me donne ceci :
Résultats de la recherche pour ch�ques :
1. 27/01/2010: Chèques vacances
Merci par avance pour votre aide....
Frank.
Hors ligne
Bonjour Franck
Remplace la partie du code correspondante de la page statique par ceci
if ($content!='')
echo '<p>Résultats de la recherche.<br /><ol class="search_results">'.$content.'</ol></p>';
else
echo '<p>Aucun résultat pour <strong>'.plxUtils::strCheck($searchword)0'</strong></p>';En ligne
Bonjour Stéphane,
En appliquant la modification dans ma page statique, le moteur de recherche ne fonctionne plus du tout....
A+
Hors ligne
Heu oui j'ai fait un coquille en mettant le code
Peux-tu essaye celui ci stp
if ($content!='')
echo '<p>Résultats de la recherche.<br /><ol class="search_results">'.$content.'</ol></p>';
else
echo '<p>Aucun résultat pour <strong>'.plxUtils::strCheck($searchword).
'</strong></p>';En ligne
Merci Stéphane pour ce retour...
Le moteur de recherche fonctionne mais dans le cas où le mot clé est inexistant dans le site internet, l'information s'affiche ainsi :
"Aucun résultat pour " et le mot clé n'est pas affiché !
En parallèle à l'envoi de votre script, j'ai testé l'utilisation de Pluxml dans un environnement Mac (càd MacOSX 10.4 + MAMP+Firefox 3.5) et là je n'ai aucun problème d'accent.
C'est pourquoi en retournant dans mon environnement professionnel, j'ai testé la manip suivante, càd la modification du fichier config.php comme cela :
define('PLX_CHARSET', 'ISO-8859-1');
au lieu de
define('PLX_CHARSET', 'UTF-8');
et le souci d'affichage des accents est réglé !!
Pour autant, je n'arrive pas à comprendre pourquoi le moteur de recherche renvoie dans un cas une liste des articles sans problème d'accentuation et dans le cas contraire rencontre des difficultés pour afficher la phrase "Aucun résultat pour +mot clé recherché".
Merci par avance pour votre éclaircissement ....
Frank.
Hors ligne
Bonjour,
se méfier de strtolower (qui ne se base pas sur le charset de la page), en utf-8 il vaut mieux utiliser mb_strtolower.
mb_strtolower($chaine,'UTF-8')
J'ai eu le soucis également avec le mot 'été', par exemple, qui s'affichait correctement avant traitement par strtolower et se retrouvait avec des '�' à la sortie.
Cordialement,
Ludo
Dernière modification par Ludo_17 (07-02-2010 18:45:38)
Hors ligne
Toutes les fonctions mb_xxxx nécessitent l'extension mb_string d'installée sur le serveur.
C'est pour cela que nous n'avons pas retenu cette solution
En ligne