[V4-page statique] recherche simple
gcyrillus-nomade
Member
bonjour,
<edit >sur certains blogs avec de nombreux articles le script semble manqué de mémoire , faites plutôt usage de ce script sur ce topic:
http://forum.pluxml.org/viewtopic.php?pid=8784 .</edit>
Voici un moteur de recherche basic , trés similaire a celui proposé pour la V3 .
La recherche est effectué sur , le titre , chapo et content de chaque article .
<edit> et une version plus complete proposant un résumé de l'article ou est trouvé le mot recherché : http://forum.pluxml.org/viewtopic.php?pid=8703#p8703 .
Procedure et conseil d'installation sont expliqué avec la version moins basique , plus bas dans ce topic .
n'existe ou ne fais pas :
- generation du formulaire de recherche autaomatique dans la sidebar ou le header .
- option de recherche de type : & , | , !
- option de recherche sur titre ou contenu ou auteur .
- pagination
</>
Pour l'installer :
creer une nouvelle page statique , editer la et copier/coller le code suivant dedans :
Ne reste plus qu'a repasser coté public et tester votre page de recherche .
GC
corrections de 2 erreurs (zappage d'un article et un if inutile)
<edit >sur certains blogs avec de nombreux articles le script semble manqué de mémoire , faites plutôt usage de ce script sur ce topic:
http://forum.pluxml.org/viewtopic.php?pid=8784 .</edit>
Voici un moteur de recherche basic , trés similaire a celui proposé pour la V3 .
La recherche est effectué sur , le titre , chapo et content de chaque article .
<edit> et une version plus complete proposant un résumé de l'article ou est trouvé le mot recherché : http://forum.pluxml.org/viewtopic.php?pid=8703#p8703 .
Procedure et conseil d'installation sont expliqué avec la version moins basique , plus bas dans ce topic .
n'existe ou ne fais pas :
- generation du formulaire de recherche autaomatique dans la sidebar ou le header .
- option de recherche de type : & , | , !
- option de recherche sur titre ou contenu ou auteur .
- pagination
</>
Pour l'installer :
creer une nouvelle page statique , editer la et copier/coller le code suivant dedans :
<?php
/**
* Classe plxSearch Recherche simple
* @Pages statiques Pluxml beta 4
* @extends plxMotor
* @author Griboval Cyril
* @Beta
**/
class plxSearch extends plxMotor {
function plxSearch($filename) {
parent::plxMotor($filename);
$plxGlob_arts = & new plxGlob(PLX_ROOT.$this->aConf['racine_articles']);
$this->motif = '/^[0-9]{4}.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
$this->aFiles = $this->plxGlob_arts->query($this->motif,'art',$ordre,0,999);
}
function getsearch() {
//$this->getArticles(); # Recuperation des articles // <- ici consommation de ressources inutile
if(is_array($this->aFiles)) { # Si on a des fichiers
$nbcfiles =count($this->aFiles);
$nbccount = 0;
$i = 0;
/* Nettoyage des mots recherché */
$word = $_POST['search'];
$word = addslashes($word);
$word = strtolower($word);
/* on parcours tout nos fichiers , attention ça peut-etre long */
while ($nbccount+1 <= $nbcfiles):
$file2open = PLX_ROOT.$this->aConf['racine_articles'].$this->aFiles[$nbccount];
$this->parseArticle($file2open);
$this->art =$this->parseArticle($file2open);
$nbccount++;
/* on extrait les titre chapo et content pour y rechercher notre chaine */
$content = $this->art['title'];
$content .= $this->art['chapo'];
$content .= $this->art['content'];
$content = addslashes($content);
$content = strtolower($content);
$trouve = substr_count($content,$word);
if($trouve!=0){ #on alimente notre tableau
$tableau[] = array(preg_replace('[^(000)|^(00)|^(0)]', '', $this->art['numero']),$this->art['title'],$this->art['url']);
$i++;
}
endwhile;
}
/* on initialise notre variable de resultat de recherche en ouvrant une liste olrdonnée */
$search_results = '<ol class="recherche">';
#compte les enregistrement puis boucle dessus
$n=count($tableau);
for($i=$n-1;$i >= 0;$i--) {
#creations de liens vers les articles contenant la chaine recherchée
$search_results .= '<li><a href="?article'.$tableau[$i]['0'].'/'.$tableau[$i]['2'].'">'.$tableau[$i]['1'].'</a></li>';
}
/* si notre variable de resultat de recherche n'a pas changé on la remplace par un message */
if($search_results=='<ol class="recherche">') {$search_results = '<p style="display:list-item;list-style-position:inside;" class="recherche"> ... fin de la recherche</p><p class="recherche"><b>La recherche a étè infructueuse </b>, il n\'y a rien qui corresponde à vos criteres .
<br /> <b>Verifiez l\'orthographe ou changez les mots clés. </b></p>'; }
/* si notre variable de recherche a étè alimenté , on referme notre liste ordonnée */
else { $search_results .= '</ol><p style="display:list-item;list-style-position:inside;" class="recherche"> ... fin de la recherche</p>';
}
/* on affiche le formulaire */
$search_results .= '
<form method="post" action="">
<fieldset><legend >Faire une nouvelle recherche en changeant les mots clés.</legend>
<p><input name="search" size="15" maxlength=\"255\" value="'.$word.'" type="text" class="search" /> <b> >> </b> <input type="submit" value="rechercher !" /></p>
</fieldset>
</form> ';
return $search_results;
}
}
?>
<div id="content">
<div class="post">
<h2 class="titre_recherche">Recherche</h2>
<?php
if(!empty($_POST['search'])) {
echo '<p style="color:red"> Votre Recherche : '.$_POST['search'].'</p>';
$search = new plxSearch((PLX_CONF));
$search->prechauffage();
$search->demarrage();
echo $search->getsearch();
}
else
{
?>
<form method="post" action="">
<fieldset><legend >Faire une recherche .</legend>
<p><input name="search" size="15" maxlength=\"255\" value="" type="text" class="search" /> <b> >> </b> <input type="submit" value="rechercher !" /></p>
</fieldset>
</form>
<?php
} #fin
?>
</div>
</div>
enregistrer , verifier que votre page est "active" .Ne reste plus qu'a repasser coté public et tester votre page de recherche .
GC
corrections de 2 erreurs (zappage d'un article et un if inutile)
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Merci à toi !
TCho, Hamtaro.
, il y a 2 légere modif sur le script en debut de topic .
Puis voici une version qui tente de faire un petit résumé de la page ou l'occurence est trouvée : la base est la même .
GC
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Un plus grand aperçu autour du mot serait pas mal je pense.
TCho, Hamtaro.
Ici , tout au plus , c'est 2 devant , 2 derriere ...
GC
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
bien vu
Une derniere mise a jour sur ce topic :
: modification des regex en une seule
: résumé plus long et regulé a (en principe) 30 espaces , ce qui fait 31 mots ou ponctuations maxi .
Le résumé est effectué en deux etapes .
1)
ajout des 50 caractéres maximum se trouvant a gauche et a droite de chaque occurence dans chaque article
Pour modifier cela :
dans la variable $masque
Ligne : 61 la valeur est fixer a 50 maximum , vous pouvez la modifier . Garder la valeur minimale a zéro.
2)
regulation a 30 espaces (31 mots ou ponctuation).
Pour la modifier
La ligne 70 , Le chiffre 30 entre les accolades, détermine le nombre maximale d'espace autoriser dans le résumé .
Changer la valeur de ce chiffre si vous voulez diminuer ou augmenter ce nombre de mots maximale possible a afficher .
La 3eme version :
Comme Indiqué par Sapin Tremblant , vous pouvez inserer le formulaire dans votre template .
Pour cela il vous faut au préalable créer cette page statique et recuperer son lien .
Le formulaire de base est :
Vous pouvez ciblé ce formulaire coté CSS avec #recherche pour la boite , ou .formSearch juste pour le formulaire .
Pour créer cette page statique , il est préferable de copier coller le code dans l'administration , cela vous assure un encodage compatible avec votre version et configuration de pluxml .
(pensez y si vous éditer en local , migrer ou changer de config d'encodage)
.
Les résultat de recherche sont stockés dans un tableau (array) , Il est donc possible , si vous en avez l'envie de vous bricoler une pagination ... attention le formulaire fonctionne en method POST uniquement , il n'est pas possible de passer votre requete par l'url . l'url sert déja a appelé lvotre page statique de recherche .
GC
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Justement , je me demandais comment faire pour intégrer dans la sidebar. Merci à tous les deux d'en avoir parlé !
@Hamtaro , je te viens de mettre a jour la derniere version de ce moteur de recherche (http://forum.pluxml.org/viewtopic.php?pid=8703#p8703) , je te conseil (a toi et aux autres) d'en faire autant aux endroits ou tu en fait usage .
1) une erreur : un strip_tag() placée trop tardivement dans le code remontée a sa place logique .
2) une variable 'vidée' au lieu d'etre remise a jour .
Me semble que cette version est finalisée .
GC
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Tu pourrais citer les lignes ?
Parce que j'ai tout réarrangé à ma sauce...
ajout strip_tag()pour 'chapo' et 'content' , lignes 39 et 40 ;
ligne 60 , mise ajour de la variable : $resume ;
ligne 63 , elimination du strip_tags() ;
GC ;
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, postmaster@www.customtaro.fr and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Voici ma page statique : Trop d'articles à regarder ? Une erreur quelque part ?
Ton code ne semble pas avoir d'erreur , les corrections sont bonnes.
en copiant collant celui-ci au travers de l'admin et en local , pas d'erreur non plus.
As tu mis a jour ton code au travers de l'admin ?
Si tu l'as copié coller a partir de ton éditeur , est-il complet ? ...
Eventuellement efface tout , recharge ta page de recherche coté visiteur , normalement tu devrais avoir une page blanche ...
Remet le code dans ta page statique et relance ta recherche voir si ça bug toujours .
Combien d'articles ton blog contient t-il ?
Tes articles sont-il 'gros' ?
Eventuellement , ligne 16 , a la valeur '999' (nombre d'article maximum théorique de pluxml ) , applique une valeur de la moitié de ton nombre d'article.
Test a nouveau ,
Si il y a encore une erreur serveur , , met cette valeur a 1 .
Si il y a encore une erreur serveur je doute alors que cela vienne du script .... du moins je n'ai aucune idée de la raison
Que dit ton log ?
GC
<edit> je reste un petit moment , puis je repasse demain soir après ma journée de boulot
++</>
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Pour ce qui est du log du serveur, j'ai cherché et je ne sais pas ou le récupérer. Je suis chez ovh.
J'ai descendu à 200 articles et effectivement, ça remarche...
Un souci au niveau du nombre d'articles ?
200 => OK
300 => OK
400 => PB
350 => OK
370 => OK
380 => PB
Une idée ?
probablement limité la taille de tableaux en amonts pour evité que ceux-ci ne deviennent trop importants .
questions :
Cette erreur serveur apparait-elle systématiquement ?
Si non :
sur quelle requete et quelle site ?
Peut - tu mettre temporairement ajouter 2 pages statiques , celle qui bug et celle de base , histoire de voir , combien de résultats et quel pages sont retournées selon la requete ?
<hors sujet>
Ceci constaté , on perçoit les limites de la gestions de fichiers XML dans le contexte 'pluxml' .
Sur de gros base de données xml , xmlreader s'impose et me semble seul capable de rivalisé avec une bdd et d'assurer une pérenité . (juste mon avis d'amateur).
</hs>
GC
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Par contre :
Serveur Free : OK
Serveur OVH : erreur
Apparemment c'est un pb lié à OVH ?
Pour ce qui est du hs, si tu le dis ! (j'ai rien compris;..)
Pour tes problémes lié a ovh :
ce script : http://forum.pluxml.org/viewtopic.php?pid=8784#p8784 peut te convenir (il passe sur un serveur OVH)
Pour gardé celui que tu as installé :
recherche cette ligne : $this->getArticles(); # Recuperation des articles
et efface la , elle n'est pas necessaire et a l'inconvénient de stocker en mémoire l'ensemble des contenus des articles . Le script n'en a pas besoin pour effectuer sa recherche.
GC
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci