Cette contribution a 3 objectifs :
Le premier est de proposer une recherche multi-critère par mots-clés sur les articles d’un site spip.
Le second est de permettre de placer dans n’importe quelle page de rubrique d’un site spip une recherche multicritère avec les groupes de mots-clés que l’on veut.
Le troisième est de pouvoir créer une page indépendante du site spip, c’est-à-dire une page de recherche multicritère qui n’est liée à aucune rubrique particulière (ca peut être dans un squelette article par exemple).
Exemple :
Dans une rubrique nommée emploi, on peut avoir une recherche avec 3 groupes de mots-clés :
- offres d’emploi
- formation
- offres de stages
On peut aussi avoir une page (que l’on nomme formulairemot.php3 et qui va avec formulairemot.html) qui n’est associée à aucune rubrique, regarder l’image :
Bien évidemment la recherche se fait sur les mots clés du groupe et non sur le groupe pour faire une recherche sur le groupe il faut sélectionner tous les mots clés du groupe.
Lien de démo
Installation
Vous trouverez ci-joint 5 fichiers :
AddGroupmotDsRub.php
(permet d’ajouter un mot ou plusieurs groupes de mots-clés aux rubriques de votre site, il permet aussi d’effacer un ou plusieurs groupe de mots-clés attachés à une rubrique.)
requete.php
Crée la table spip_rubriques_groupes dans mysql automatiquement, ce fichier s’autodétruit une fois la table créée.
inc-search.php
(c’est le formulaire de recherche à inclure dans vos squelettes)
searchresult.php3 et searchresult.html
(C’est la page de resultat, on peut présenter les résultats soit par Rubrique soit par mots-clés.)
1e étape :
Placer dans votre répertoire ecrire les fichiers :
requete.php
AddGroupmotDsRub.php
Placer dans votre site SPIP à la racine, les 3 fichiers :
inc-search.php
searchresult.php3
searchresult.html
2e étape :
Il suffit de faire un include dans votre squelette rubrique, là où vous souhaitez voir apparaître le formulaire de recherche multicritères.
Ajouter le code suivant :
<?php
include ("inc-search.php");
?>
3e étape :
Créer la table mysql : spip_rubriques_groupes
Pour cela, aller à cette adresse :
http://www.monsiteweb.fr/ecrire/requete.php
La table est alors créée et vous êtes redirigé vers la page AddGroupmotDsRub.php, qui vous permet de choisir les groupes de mots-clés à associer à telle ou telle rubrique. Attention, vous devez vous être connecté à l’espace privé pour pouvoir faire les modifications.
Si la table n’a pas pu être créée automatiquement, exécuter cette requête à l’aide de phpmyadmin sur mysql :
CREATE TABLE spip_rubriques_groupes
(
id_groupe
bigint(21) NOT NULL default ’0’,
id_rubrique
bigint(21) NOT NULL default ’0’,
KEY id_groupe
(id_groupe
,id_rubrique
)
) TYPE=MyISAM ;
Allez ensuite à l’adresse : http://www.monsiteweb.fr/ecrire/AddGroupmotDsRub.php à l’aide de votre navigateur web et selectionnez les groupes de mots-clés que vous souhaitez attacher à une rubrique.
Vous retrouverez dans le menu déroulant des rubriques le champs multisearch, c’est en fait la rubrique 0 qui n’est attachée à aucune rubrique.
Attention : il est impératif, pour voir fonctionner cette contrib, d’avoir créer au préalable des mots-clés dans l’interface privée et d’associer certains de ces mots-clés ou tous à des articles
Et pour finir, allez dans la rubrique où vous avez décidez de proposer une recherche multicritères et testez.
En option
Vous pouvez avoir besoin d’utiliser un formulaire avec une recherche multicritère ailleurs que dans une rubrique, il faut alors :
- Ajouter un champs à spip_groupes_mots, exécuter alors la requête suivante dans phpmyadmin ou équivalent :
ALTER TABLE spip_groupes_mots
ADD is_multisearch
TINYINT DEFAULT ’0’ NOT NULL ;
- Ajouter le code suivant dans le squelette qui n’est lié à aucune rubrique particulière (ca peut être dans un squelette article par exemple).
<?php
$id_rubrique=0;
include ("inc-search.php");
?>
Cette contribution a totalement été revue, elle a été testée sur SPIP 1.7, 1.7.1, 1.7.2 et 1.8b2.
Elle utilise maintenant les fichiers de connection de SPIP, elle est donc secure. Autres avancées, on ne modifie plus du tout le noyau de SPIP et la table supplémentaire est créée automatiquement.
Cette contribution a été testé avec les navigateurs suivants :
- Firefox, safari, mozilla, IE sous mac os x 10.3.6 (merci à Karim Belkacem et Yorghos)
et Firefox, IE sous windows XP et 2000.
Je mets le zip ici :
En attente de commentaires...
Discussions par date d’activité
35 discussions
Je crois me souvenir que le plugin « Recherche multi-critère par mots-clés » bénéficiait d’un article sur SPIP contrib que je ne retrouve nulle part. L’article a-t-il été supprimé ?
On trouve par conte le plugin ici :
Qui est valable pour SPIP 1.9
Quelqu’un peut-il donner des informations sur l’adaptation de ce plugin pour SPIP 2 et la documentation y relative ?
Meilleurs messages
François Daniel Giezendanner
Répondre à ce message
Bonjour, petite question concernant les possibilités de ce plugin : Le nombre de mots clés à afficher est-il limité (par les performances serveurs). Si j’ai cinq critères de tri comportant chacun 200 mots clés. La page ne sera-t-lle pas trop lourde à afficher ?? Merci...
Répondre à ce message
technique pour faire une recherche multicriteres sans utiliser de plugins.
Fonctionne avec les versions spip integrant IN.
1) Le formulaire presentant les mots clés, par groupe de mots clés
2) les boucles affichant les articles correspondant. La 1re boucle recupere les articles ayant un mot clé non selectionné dans le formulaire. Puis la 2e boucle affiche les articles qui n’ont pas été selectionnés dans la 1re, ceci grace a doublons :
A noter : le champ input page a pour valeur sommaire : l’envoi du formulaire mene sur cette page. Changez cette page à votre convenance.
Jujubre
Bonjour,
Merci pour cette solution. Mais elle affiche tous les articles possédant un ou plusieurs des mots-clé sélectionnés.
Je cherche une solution limitant l’affichage aux seuls articles possédant tous les mots-clé sélectionnés (et sans essayer la version SPIP2 et le plugin Bonux, comme Idoric, qui me priverait de plugins inconciliables avec Spip).
Je n’y arrive pas, pouvez-vous m’aider ?
D’avance merci !
Bonjour Fabrice,
dans mon cas (utilisé sous spip 1.9.2g) :
Dans les critères de ma boucle, j’ai utilisé :
Suite à la requéte :
Après avoir saisi le formulaire :
En espérant que celà réponde à ta question
Bonne continuation à tous les spipiens qui font vivre ce formidable outil
Répondre à ce message
Je recommence :
<BOUCLE_motcle(POUR)tableau #ENVmotcle>
<BOUCLE_doublons(ARTICLES) !id_mot=#VALEURdoublons/>
</BOUCLE_motcle>
<BOUCLE_resultat(ARTICLES)doublons>
<h4>#TITRE</h4>
</BOUCLE_resultat>
Répondre à ce message
@Jujubre
Je n’ai pas réussi à faire marcher la deuxième partie de ton explication (le !IN semble se comporter étrangement), mais j’ai fait ça à la place avec l’aide du plugin Bonux et le tout fonctionne très bien pour moi :
#TITRE
Répondre à ce message
Bonjour a tous, j’aimerai savoir comment afficher le logo de l’article dans la page searchresult lorsque celle ci affiche le résultat de la recherche.
merci
Savez vous si une version existe pour SPIP 1.9.2 ?
ou quelles adaptations faire pour que cela fonctionne ?
Par avnce, merci pour votre aide précieuse.
Répondre à ce message
Bonjour et merci pour cette contrib ultra utile qui contourne un point faible de Spip... très fort...
J’ai cherché à faire évoluer le script. On peut l’adapter assez facilement à n’importe quel squelette mais je sèche sur un point.
Comment obtenir un seul résultat contenant la liste des articles correspondante au choix du visiteur et pas les autres eventualités de résultat...
Par exemple : 3 groupes de mots-clef :mc1, mc2, mc3... on obtient LE résultat unique qui correspond aux critères de choix mc1+mc2+mc3.
Pour le moment on peut par exemple obtenir le genre de résultat ci dessous :
x résultats pour la sélection :
> mc1+mc2+mc3
> mc2+mc3
> mc1+mc2
> mc3 (c’est un exemple, bien sur...)
Et je cherche à n’obtenir que mc1+mc2+mc3 quitte à avoir 0 réponse.
Pour cela il faut modifier la requete : $sql = "select count(*) as num... etc (du moins c’est ma déduction...)
soit modifier une variable $listidmot... et là... bin je sèche méchamment et je l’avoue, pas assez musclé en PHP et SQL... si j’ai la soluce avant vous, je vous la mets en ligne, promis...
Et quitte à casser les pieds à tout le monde, j’aimerais bien aussi rajouter le sous-titre après le titre sans tout faire boguer... Deux défis pour le prix d’un... c’est Noël !!!
Cette contrib est à mon avis une base pour améliorer grandement la vie des spipeurs... je suis sur qu’elle va faire son chemin...
Vive SPIP !!!
Louis.
Merci pour le commentaire,
Cette contrib.est en cours de réécriture pour être adaptée à la fois à SPIP 1.7 et SPIP 1.8, avec comme modifications :
$_POST utilisé au lieu de $_GET,
possibilité de limiter la recherche à la rubrique en cours,
recherche avec « et » et « et/ou » au choix donc possibilité d’avoir comme tu le souhaites des résultats correspondants exactement aux mots-clés recherchés et ayant tous les mots-clés donc, c’est une des demandes récurentes.
Possibilité aussi de faire des recherches limitées à une certaine date et diverses améliorations ou corrections de bugs (sans grande conséquence).
Voilà un peu les avancées prévues pour la nouvelle version d’ici 3 semaines environs (je sais ça fait longtemps que je promets une nouvelle version, mais ça vaut le coup d’attendre encore un peu, elle arrive...)
Paul
http://www.netdeveloppeur.com
Bonjour Paul et bonjour à tous,
merci pour ta réponse... ça va sembler interminable mais je supporterai bien une attente de trois semaines, pas de problème... je guette la nouvelle version et encore une fois, si je trouve quelque chose de mon coté, j’enverrais ma version...
Bon courage et vive Spip !
Louis.
Vivement la fin octobre alors !
Salut,
Nous sommes le 2 novembre, la nouvelle version est prête, il me manque juste à écrire la contribution, donc encore quelques jours de patience...Merci.
Paul
http://www.netdeveloppeur.com
Merci Paul, de nous tenir au courant. Je n’ai pas abouti de mon coté. Je laisse faire les pros... total respect !!!
Ca y est la recherche multicritères par mots-clés SPIP est enfin publiée.
Paul
Net Developpeur : création sites web SPIP
Bonjur,
Est-il prévu de modifier cette contrib pour qu’elle soit compatible avec spip 1.9 ?
J’ai pu créer la table à la main et changer 1 ligne de script mais je suis bloquée sur la page
ecrire/AddGroupmotDsRub.php ?rub=0
"call to undefine function spip_query() in AddGroupmotDsRub.php on line 215
merci
dd
résolu ton problème ?
Bonjour,
Merci pour cette contrib.
Le résultat apparaît dans une page blanche sans style. Je voudrais que ça apparaissent dans une page article, ou au moins avec les CSS, mon bandeau, etc. Je ne sais pas faire ça. J’ai appliqué les css mais ça ne fait pas appraître mon bandeau par exemple. Et quand j’essaie de placer le code de article.html dans searchresult.html ben ça marche pas.
Merci d’avance pour le coup de main
Bonjour louis,
Je voulais savoir quel version de spip tu utilise ?
Merci
Bonjour louis,
Je voulais savoir quel version de spip tu utilise ?
Merci
Répondre à ce message
Peut on l’adapter à spip 1.9.2
Répondre à ce message
Bonjour,
Très belle contribution.
Envisagez-vous de la transformer en plugin ?
FDG
j’aimerais également le plugin si vous le développez !
merci pour cette contribe
Le plugin est ici : http://www.spip-contrib.net/Recherche-avancee-sous-SPIP
merci !
ça fonctionne impec
Bonjour,
j’ai lu rapidement l’article : http://www.spip-contrib.net/Recherche-avancee-sous-SPIP
Bravo, excellent plugin, mais je ne vois pas ce qui est proposé pour faire une « Recherche multi-critère par mots-clés » avec plusieurs mots-clés !
Pouvez-vous nous en dire plus sur ce point SVP.
Meilleurs messages.
FDG
Bonjour
j’aurais aimé pouvoir sélectionner une ou plusieurs rubriques, un ou plusieurs mots-clés, un groupe de mots-clés... ce qui correspond à priori à votre contribe mais pas au plugin « recherche avancée » sus mentionné (déjà excellent par ailleurs).
Merci
Répondre à ce message
Bonjour,
serait-il possible de mettre à jour cette contribution pour la version 1.9 ne comportant plus de fichiers php3.
Je ne trouve pas non plus l’équivalent du fichier inc.php3.
Par quel fichier a-t-il été remplacé dans la version 1.9.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |