Ajouter un moteur de recherche
flipflip
Member
Actuellement PluXml n'intègre pas de moteur de recherche et techniquement l'ajout de cette fonction sera compliqué. J'ai réfléchis à une solution pour contourner le problème, utiliser le module de recherche de google.
- Vous créer un compte Google AdSense : http://www.google.com/adsense;
- Dans l'onglet Configuration AdSense de votre compte, sélectionner "AdSense pour les recherches";
- Complété le formulaire et récupéré le code.
Il se compose en deux parties : le formulaire et l'affichage des résultats. Dans un premier temps nous allons intégrer le formulaire dans la barre de menu de droite. Éditer le fichier themes/defaut/sidebar.php, après le bloc :
Et voila c'est fonctionnel mais il y a deux contraintes :
- être référencé par google pour voir des résultats;
- accepter que des liens commerciaux s'affichent lors de vos recherches mais l'intérêt est un reversement des gains publicitaire.
- Vous créer un compte Google AdSense : http://www.google.com/adsense;
- Dans l'onglet Configuration AdSense de votre compte, sélectionner "AdSense pour les recherches";
- Complété le formulaire et récupéré le code.
Il se compose en deux parties : le formulaire et l'affichage des résultats. Dans un premier temps nous allons intégrer le formulaire dans la barre de menu de droite. Éditer le fichier themes/defaut/sidebar.php, après le bloc :
<div id="categories">
<h2>Catégories</h2>
<ul>
<?php $plxShow->catList('Accueil','#cat_name'); ?>
</ul>
</div>
Ajouter le premier code qui vous a été fournis par google dans des balises div, par exemple :<div>
<h2>Rechercher</h2>
<form action="http://www.votresite.fr" id="cse-search-box">
<div>
<input type="hidden" name="cx" value="VOTRE PARTENAIRE PUB" />
<input type="hidden" name="cof" value="FORID:11" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" size="20" />
<input type="submit" name="sa" value="Rechercher" />
</div>
</form>
<script type="text/javascript" src="http://www.google.fr/coop/cse/brand?form=cse-search-box&lang=fr"></script>
</div>
Maintenant il va falloir intégrer l'affichage des résultats. Éditer le fichier themes/defaut/home.php. Remplacer le contenue par :<?php include('header.php'); # On insere le header ?>
<div id="page">
<?php if($_GET['cx'] == 'VOTRE PARTENAIRE PUB') { ?>
<div id="cse-search-results"></div>
<script type="text/javascript">
var googleSearchIframeName = "cse-search-results";
var googleSearchFormName = "cse-search-box";
var googleSearchFrameWidth = 795;
var googleSearchDomain = "www.google.fr";
var googleSearchPath = "/cse";
</script>
<script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script>
<?php } else { ?>
<div id="content">
<?php while($plxShow->plxMotor->plxRecord_arts->loop()): # On boucle sur les articles ?>
<div class="post">
<h2 class="title"><?php $plxShow->artTitle('link'); ?></h2>
<p class="post-info">Catégorie : <?php $plxShow->artCat(); ?> | le <?php $plxShow->artDate(); ?></p>
<?php $plxShow->artChapo(); ?>
<p class="comment_nb"><?php $plxShow->artNbCom('link'); ?></p>
</div>
<?php endwhile; # Fin de la boucle sur les articles ?>
<?php # On affiche la pagination ?>
<p id="pagination"><?php $plxShow->pagination(); ?></p>
</div>
<?php include('sidebar.php'); # On insere la sidebar ?>
<?php } ?>
</div>
<?php include('footer.php'); # On insere le footer ?>
Sur la ligne
<?php if($_GET['cx'] == 'VOTRE PARTENAIRE PUB') { ?>
Penser bien à mettre votre identifiant fournis par google.Et voila c'est fonctionnel mais il y a deux contraintes :
- être référencé par google pour voir des résultats;
- accepter que des liens commerciaux s'affichent lors de vos recherches mais l'intérêt est un reversement des gains publicitaire.
J'ai un string de l'array
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je veux dire, par exemple sur ton site, où tu as semble-t'il mis en place cette recherche, si je cherche Eten, l'article sur ce SmartPhone m'est bien renvoyé mais si je cherche juste smart ou phone, il ne m'adresse rien...
Merci, en tout cas de l'astuce.
à plus,
Gzyg
<edit>(200ème message sur pluxml.org !! je vais arroser ça !)</edit>
Santé !
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Effectivement c'est une contrainte que j'ai soulevé en fin de post :
Je n'avais pas vue mais vous vous utilisé une page qui ne reprend pas le design du site pluxml.org
J'ai un string de l'array
j'avais commencer a me confronter au probleme d'un moteur de recherche sur Pluxml.( http://forum.pluxml.org/viewtopic.php?id=1058 )
Il s'est rapidement avérer que la consommation de memoire est beaucoup trop importante pour le faire comme je le tentais . allez lire les articles un par un et alimenter un tableau ... Sur des pluxml bien gras , le script s'enlise ... defaut de memoire ou temps d'execution trop long .
Un dernier test sur une recherche par période (années) pouvait limiter ce defaut , mais la encore , un pluxml avec un post par jour grossi trop rapidement et pousser la recherche au mois par mois ou trimestres , bah c'est pas terrible .
Ce probleme est-il lié a un usage inadapté de pluxml ? (trop de contenu pour ce type de gestionnaire ) , ce n'est ni un WP ou un dotclear ! .
Reste cependant une piste en AJAX que je n'ai pas encore tenter .
L'idée : s'en aller scanner les fichiers par groupe de 20 ou 30 , renvoyer les infos dans la page et relancer automatiquement la recherche sur le prochain groupes de fichiers et ce, jusqu'à épuisement des articles. sur toute la période de vie de ce pluxml , ou sur une période données .
Si quelqu'un passant ici a un lien vers une demo , un tuto ou exemple en ajax qui relance automatiquement X fois une requête , ça m'intéresserait de voir et de tester l'idée sans partir de zéro .
Ajax a ces défaut , html 5 se profil ... il y a un truc correct a faire a mon avis , sans forcement le mettre a la sauce WEB.2 (...que je sais toujours pas ce que ça veut dire , lol ).
A défaut d'apporter une soluce et sans vouloir provoquer de troll , Cela amènerait-ils d'autres idées ou solutions parmis vous ?
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
A un moment j'ai pensé à faire un fichier "base" qui aurait pour but de regrouper les articles, juste le texte brut, le moteur ferait une requête à ce fichier mais le fichier va littéralement explosé pour les gros blog et puis qu'elle structure de données et quel format choisir ?
Je pense que la structure à base de fichier empêche la mise en place d'un moteur de recherche à PluXml.
J'ai un string de l'array
Il serait peut-être intéressant de voir ce que donnerait PluXML associé à une BDD ?
Sans intégrer celle-ci dans le script, je ne sais pas si c'est possible mais je réfléchis à ça car mon besoin est mixte : légèreté PluXML (facilité d'installation et d'administration) + multi-utilisateurs (sur une partie du site) + stockage BDD (pour recherches et tris)...
En fait pour le moment je me sers de PluXML comme "portail" (en n'utilisant que les pages statiques).
Je pense vous proposer bientôt un "design" spécifique à cette "chose"...
à plus,
Gzyg
Pourquoi mettre de l'ajax à toutes les sauces. Tu peux très bien faire ta méthode sans. (surtout que ça te fera pas gagner grand choses)
Tu récupères tous les noms de fichiers dans un tableau
Dans un boucle de lecture, tu parses les fichiers un par un, en testant si les critères de recherches sont vérifiés
Si un critère est valide tu affiches le résultat et tu passes au fichier suivant.
Tu bornes l'affichage avec les instructions du type ob_start(), ob_end_flush()
D'un point de vue consommation mémoire il y a le tableau qui stocke le nom de tous les fichiers.Même en contenant 500 noms de fichiers ce n'est pas ça qui posera vraiment problèmes. C'est pinuts.
D'un point de vue performance, dans la mesure où quelque soit la méthode, il faut lire tous les fichiers pour les parser et faire les tests de recherche, ce sera difficile d'optimiser. Ce sont surtout les entrée/sortie (lecture écriture de fichier) qui consomment énormément de CPU et ralentiront le script
Bien sur on peut imaginer d'autres méthodes (système de cache, sérialisation, bidouilles de l'apprenti développeur) mais ça risque vite de devenir des usines à gaz pour pas grand chose. Si les temps de réponses deviennent vraiment trop importants, on peut alors penser que pluxml n'est pas adapté pour le site et dans ce cas il vaut mieux envisager d'utiliser un autre moteur de blog, qui lui sera adapté pour des gros sites avec beaucoup de données. Il faut trouver le bon compromis.
Il y a un moteur de recherche qui avait été développé pour la version 3.1 de pluxml (et mypluxml), qui je pense, conviendrait très bien. Je ne me souviens plus si ça a déjà été adapté pour la 4.1.x
Stéphane.
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Le moteur de recherche en page statique du 4 est similaire a la version pour la 3 , il se greffe sur le tableau des artcicles de plxuxml ..
voir la premiere version que j'avais ressortit http://forum.pluxml.org/viewtopic.php?id=1044
L'idée de morceler le script dans sa recherche est en effet une bidouille . En fin de compte les ressources requises seront les mêmes . La regex utilisé est probablement ce qui est le plus couteux et qui finit par faire mouliner le truc.
Pour l'idée en BDD , il y a peut-etre sqlite comme piste interessante ....
GC
<edit> erreur de manip</edit>
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
Le code est dispo sur le wiki à cette adresse
http://wiki.pluxml.org/?page=Ajouter%20un%20moteur%20de%20recherche%20dans%20une%20page%20statique
J'ai essayé d'optimiser au maximum les traitements.
Stéphane
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)