J’ai parcouru le site (de façon non-exhaustive, je le crains) et je n’ai pas trouvé de contribution similaire à celle que je vais soumettre ici.
J’aurais souhaité que cette contribution soit le début de la création d’un plugin (chose que je ne sais pas faire) ou plutôt, de l’évolution d’un plugin existant (chose que je ne sais pas faire non plus).
Quoi qu’il en soit, voici quel était mon problème et quelle solution (la contrib) mon pote Gaston y a apporté.
Dans le cadre d’un portail spip que je développe, j’ai utilisé le plugin Import CSV pour importer de nombreux articles dans ma base de données (environ 800). Or il m’était impossible d’importer, en même temps, les mots-clés liés à chaque article et il était hors de question de saisir un à un les mots-clés de chaque article puisque le contenu de la base change à peu près chaque mois.
J’ai compris, qu’en principe, n’importe quel champ (qui ne soit susceptible de prendre qu’un nombre fini de valeurs), dans n’importe quelle table sql, représentait, potentiellement, un groupe précis de mots-clés bien identifiables.
Par conséquent, j’ai entrepris de modifier le plugin « Recherche Avancée 5 » pour l’adapter à mon besoin... Mais je n’y suis pas parvenu... Ou du moins, cela ne fonctionnait pas... D’où l’entrée en scène de mon pote Gaston qui, lui, à modifié directement le squelette, à défaut d’avoir réussi, lui non plus, à modifier le plugin. En tout cas, ça marche ! Enfin, à quelques exceptions près... On a un problème avec les champs contenant certains caractères spéciaux... je les ai supprimés et cela fonctionne bien.
L’idée maintenant, c’est de pouvoir en faire un plugin propre (en tout cas beaucoup moins artisanal que notre méthode), qui ne nécessite pas de toucher au squelette (ce qui posera, évidemment, quelques problèmes futurs, parfaitement prévisibles).
Voici la méthode qui a été appliquée :
Elle consiste, dans un premier temps, à copier les fichiers suivants, dans un répertoire /squelettes, à la racine du site : squelettes-dist/recherche.html, squelettes-dist/formulaires/recherche.html et squelettes-dist/formulaires/recherche.php. Il suffit, ensuite, de les modifier en suivant ces exemples :
POUR LE FICHIER : squelettes/formulaires/recherche.html
Il faut introduire, entre la deuxième et la troisième balise input, le code figurant dans l’exemple suivant. Ici, c’est le champ « DESCRIPTIF » qui a été sélectionné et il a pour contenu les codes NSF des formations (à titre d’exemple) :
<B_surdescriptif>
<label>CODE NSF</label>
<select name="descriptif" >
<Option value="" style="color:silver">Tous</option>
<BOUCLE_surdescriptif(ARTICLES)>[<Option value="(#DESCRIPTIF|supprimer_tags|unique)" style="display:block" [(#ENV{descriptif}|=={#DESCRIPTIF|supprimer_tags}?{"SELECTED"})]>#DESCRIPTIF </option>]</BOUCLE_surdescriptif>
</select>
</B_surdescriptif>
Il faut recommencer cette manip, autant de fois que nécessaire, en changeant, bien sûr, le nom de la boucle et celui des champs, en les remplaçant par ceux des champs que l’on souhaite exploiter.
Ensuite...
POUR LE FICHIER : squelettes/recherche.html
Il faudra modifier le Fil d’Ariane, comme ceci (toujours en prenant le même exemple, moins les quelques personnalisations de polices que j’y ai introduites)...
[(#REM) Fil d'Ariane ]
<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> > <:info_rechercher:>> <strong class="on"> [(#RECHERCHE)] [(#DESCRIPTIF)]</strong></div>
<div class="cartouche">
<h1><span style="font-family: Comic Sans MS; text-transform: uppercase"><:resultats_recherche:></span></h1>
<p class="soustitre">« [(#RECHERCHE)][(#DESCRIPTIF)] »</p>
</div>
ENFIN, POUR LE FICHIER : squelettes/formulaires/recherche.php
Il faut rajouter une ligne, entre la ligne 26 et la ligne 27, comme ceci :
'surtitre' => _request('surtitre'),
Ca y est ! C’est fait ! Un joli moteur de recherche tout neuf qui permet de naviguer en fonction d’un contenu variable, dans un champ, et fonctionnel sur toutes les tables sql existant dans la base... It is good !
Mesdemoiselles, Mesdames, Messieurs... J’attends vos commentaires et vos propositions sur une création de plugin.
Aucune discussion
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 : |