Ajouter les mots-clés de l’article à leurs événements

Bases de données
Frameworks

| par Teddy Payet

Il arrive parfois que le choix éditorial d’un site change en cours de route. J’en ai fait les frais sur le site de notre association. Les choix du début étaient de mettre les mots-clés d’un événement sur l’article qui le contient au lieu de l’événement en lui même...

Aujourd’hui, grâce à un formulaire de proposition d’événements par l’espace public (un plugin développé par Cerdic sur la zone de SPIP), les mots-clés sont assignés directement aux événements. De ce fait, nous sommes contraints de mettre les mots-clés des anciens articles sur leurs propres événements pour faciliter les boucles du squelette SPIP.
Une requête MySQL serait assez complexe surtout qu’on devrait prendre en compte 3 tables différentes... Euh... C’est du haute voltige...

Une astuce : importer un fichier csv dans la base de données MySQL qui contiendra toutes les relations entre les mots-clés et les événements. Ce fichier csv sera créé par le biais de squelette pur spip. Voici comment faire :

<BOUCLE_agenda(RUBRIQUES) {id_secteur=10}><BOUCLE_articles(ARTICLES) {branche}{par id_article}{doublons}><BOUCLE_appel_events(EVENEMENTS){id_article}{doublons events}> </BOUCLE_appel_events></BOUCLE_articles></BOUCLE_agenda>

<BOUCLE_evenement(EVENEMENTS){!doublons events}{par id_evenement}><BOUCLE_mots(MOTS) {id_article=#ID_ARTICLE}{par id_mot}>"#ID_MOT";"#_evenement:ID_EVENEMENT"
</BOUCLE_mots></BOUCLE_evenement>

A noter, peut-être pour votre besoin, que je prends dans ma boucle la rubrique secteur de l’agenda qui contient tous les événements que je désire. Si vous le désirez, vous pouvez changer id_secteur=10 par id_rubrique=XX où XX est le numéro de la rubrique que vous désirez...

Lorsque vous aurez appelé la page du squelette que vous avez fraîchement créé, copiez-collez le code qui vous intéresse pour en créer un fichier csv. Cela ok, importer le fichier csv dans votre base de données par l’intermédiaire de phpMyAdmin dans la table "spip_mots_evenements".

Et voilà, le tour est joué !