SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 30 visiteurs en ce moment

Accueil du site > Interactivité, échanges > Syndication > Syndiquer par mot-clef ou par langue > Plugin « Syndiquer par mot-clef ou par langue » (spip 1.9)

Plugin « Syndiquer par mot-clef ou par langue » (spip 1.9)

MàJ pour 1.9 / 1.9.1 / 1.9.2 alpha et pluginisation d’une « bidouille » créée à l’origine pour un spip 1.7.2

22 octobre 2006 – par romain (aka LeJamaisContent !) – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

Attention ! Cette contribution modifie des fichiers du noyau de SPIP !

Même si elle a été testée par plusieurs utilisateurs nous ne pouvons garantir qu’il n’y aura pas d’effets secondaires dommageables sur votre SPIP. Conservez toujours les fichiers d’origine pour pouvoir revenir au noyau originel.

De plus, elle n’est compatible qu’avec une version précise de SPIP et sera perdue à la prochaine mise à jour : vous devrez donc recommencer.

La distrib standard offre la possibilité de syndiquer des sites rubrique par rubrique. Au prix d’une courte modif, on peut avoir une syndication en fonction d’un mot-clef ou de la langue de rédaction des articles. Si vous préférez, vous pouvez tester l’effet produit (strictement identique) en installant la version ’plugin’ qui est jointe à cet article.


[*La modif de backend.html et de exec/synchro.php *]


situation

Je gère un site « maman_poule » dans lequel je souhaite faire apparaître les productions de sites « poussins ».

Problème : les contenus des différentes rubriques de ces sites ne sont pas tous exempts de... scories (les productions des poussins en difficultés sont parfois surprenantes... dans leur diversité) et le nombre de rubriques y est volontairement restreint.

Dans ces conditions, décider de syndiquer c’est donc choisir entre tout-ou-rien et/ou bloquer-débloquer les liens un par un tous les soirs...

solution proposée : syndiquer les mot-clef

préparation :

  • 1/ sur chaque site poussin, je crée si ce n’est déjà fait un dossier « squelettes » à la racine du site
  • 2/ je recopie le « backend.html » du dossier « dist » dans mon dossier « squelettes »
  • 3/ dans le dossier squelettes, je renomme backend.html en backend-mots.html

ensuite,

  • 4/ j’édite backend-mots.html :

je remplace

par

ainsi que

par


    • Quelques explications...
      • Dans la version d’origine, le critère branche retourne l’ensemble des articles de la rubrique ET de ses sous-rubriques. Comme il n’est pas possible d’appeler directement une branche en faisant par exemple branche=42 on passe la valeur de branche via l’environnement lors de l’appel de la fonction.
      • Dans la version modifiée, s’agissant de mots-clefs et plus de rubriques, on pourrait écrire l’ID du mot clef qui nous intéresse « en dur » mais ça ne serait guère souple. Il est bien plus facile d’utiliser là encore le «  ? », c’est à dire de faire une boucle générique puis, lors de l’appel de celle-ci, d’indiquer la valeur à mettre dans notre variable d’environnement.

  • 5/ enfin, je sauvegarde le tout et l’uploade en ftp sur le site poussins
  • 6/ Là, je note le numéro d’id (xxx) du mot que je veux syndiquer (www.le_site_poussin.net/spip.php ?motxxx)
  • 7/ puis, dans le site « maman_poule », je syndique le site poussin avec un lien vers "spip.php ?page=backend-mots&id_mot=xxx
PNG - 12 ko
Syndication par Mot_clef
l’adresse à saisir pour syndiquer un « site poussin » en fonction d’un mot-clef connu

pour aller un chouillat plus loin

Nous allons rendre la sélection de ces nouveaux backend accessibles aux rédacteurs sans avoir à noter de n° d’id sur un bout de papier...

Maintenant que mon fichiers backend-mot.html est sur chaque site « poussin », il convient d’informer les rédacteurs de cette nouvelle possibilité. On va leur permettre de faire du copier/coller :

  • 8/ J’édite donc maintenant le fichier ecrire/exec/synchro.php

je repère la ligne « fin_cadre_relief() ; »

et juste au-dessus je colle :

enfin, je sauvegarde le tout et l’uploade en ftp sur les sites « poussins » et sur le site « maman_poule ». Désormais, le rédacteur de passsage pourra accèder à la liste de nos « mots-clefs syndiqués » :

PNG - 11.8 ko
Syndication par mot-clef
l’utilisateur peut choisir de ne syndiquer qu’un thème particulier

Aller encore plus loin : la syndication par langue de rédaction

Revenons en arrière et reprenons notre fichier backend-mots.html ; on y découvre que les boucles peuvent réagir à deux critères : non seulement le critère « id_mot » (qui nous a servi pour la syndication par mot-clef) mais aussi le critère « lang ».
Nous tenons ici la possibilité de créer facilement une autre forme de syndication reposant, celle-ci sur la langue de rédaction des articles.

je repère donc la ligne « fin_cadre_relief() ;// fin du hack »
et juste en dessous, je colle :

L’oeil averti relèvera la syntaxe de notre requête MySql dans laquelle le critère DISTINCT nous permet l’économie d’un tas de code. En effet, cette simple instruction permet, comme son nom l’indique, de ne ramener QUE les langues différentes.

PNG - 10.2 ko
l’utilisateur peut ne syndiquer que les articles rédigés dans une certaine langue
il suffit de cliquer sur la langue voulue et la syndication se met en place.

[*La mise en Plugin*]


Considérations de départ

Bidouiller un fichier de ecrire/exec, comme nous venons de le faire ci-dessus, c’est bien. Le problème, c’est qu’en cas de mise à jour de la distrib spip, il faut se souvenir du (ou des) fichiers qu’on a modifié pour ne pas les écraser. La mise en « plugin » permet tout d’abord d’éviter ce genre problème. _ En outre, les plugins peuvent être à volonté activés / désactivés, ce qui évite bien des manip fastidieuses.
Alors... on y retourne !

Récupérer un modèle

Pour commencer, nous allons récupérer un modèle de plugin sur svn ://zone.spip.org/spip-zone/ (le « plugin_template »). C’est en éditant son contenu et en virant ce qui ne nous est pas utile qu’on va créer notre plugin connexion.

Editer plugin.xml

Ce fichier est fourni avec des indications assez claires sur sa structure. Pour l’essentiel, il suffit donc de mettre le nom du plugin, celui de l’auteur, la version et la description dans les balises du même nom.

Les éléments plus « sensibles » sont :

    • la balise « options »
      Le documentation indique que le fichier options (comme l’ancien mes_options.php) sera chargé a chaque hit. C’est donc bien à elle que nous devons nous atteler puisque, si nous voulons savoir quels sont les mots-clefs ’syndicables’, il faut recalculer.
      La balise « options » prendra donc la forme suivante :

Bien sûr, comme indiqué dans la doc, nous inventons pour ce fichier un nom unique (surtout pas mes_options.php). C’est dans ce fichier « synchronisation_par_mots_clefs_options.php » que nous copierons tout simplement la totalité de notre fichier ecrire/exec/synchro.php modifié (tout simplement). _ 

    • La balise « fonctions » :
      Comme nous n’en avons pas besoin, elle restera vide. On peut aussi la supprimer tout simplement. _ 
    • La balise « prefixe » :
      Là encore la doc fournit des indications précises et claires : pas d’ambiguité dans le nom qui doit être unique et sera repris dans toutes nos fonctions. Ici on reste simple :
    • La balise « pipeline » :
      C’est le coeur du truc. C’est le pipeline, aussi appelé point d’entrée, qui nous permet d’altérer le fonctionnement standard de spip. La liste des pipelines déjà prévus dans spip peut être étudiée dans inc_version. Là, comme nous cherchons à altérer le fonctionnement d’un fichier de ecrire/exec en entier, nous allons retenir uniquement le pipeline « body_prive ».

La doc indique que l’on peut se dispenser de « inclure ». Nous allons néanmoins indiquer expressément le nom de ce fichier (et tout de suite après l’éditer).

Editer « template_pipelines_admin.php »

Avant d’aller plus loin, nous renommons ce fichier sous le nom que nous avons indiqué dans plugin.xml, c’est à dire « synchronisation_par_mots_clefs_pipelines_admin.php ».
En l’éditant, nous découvrons que plusieurs fonctions ont été prévues. La plupart ne nous servant à rien, nous les effaçons pour arriver au code suivant :

Editer « template_options.php »

Avant d’aller plus loin, nous renommons ce fichier sous le nom que nous avons indiqué dans plugin.xml, c’est à dire « synchronisation_par_mots_clefs_options.php ».
En l’éditant, nous découvrons... qu’il est vide !
Super !
On va y copier/coller la totalité du fichier ecrire/exec/synchro.php que nous avons modifié selon nos besoins dans la première partie de cet article.

Et ensuite ?

et ensuite,... c’est fini (ou presque). Nous pouvons effacer les fichiers templates qui ne servent à rien dans notre cas (template_fonctions, template_pipelines_cron, template_pipelines_typo et template_pipelines_public).
Nous avons donc un plugin tout neuf composé de 4 fichiers :

    • gpl_fr.txt : (pour la license)
    • plugin.xml
    • synchronisation_par_mots_clefs_pipelines_admin.php
    • synchronisation_par_mots_clefs_options.php

Si ce n’est déjà fait, on crée un dossier « plugins » à la racine du spip. On y crée ensuite un sous-dossier « synchronisation_par_mots_clefs » (ou ce que vous voulez, a priori ça n’est pas critique). On y glisse nos quatre fichiers.

Rajouter le fichier "backend-mots.html

Pour que tout fonctionne comme prévu, il ne nous reste plus qu’à recopier le fichier ’backend-moots.html’ dans le répertoire de notre plugin, au même niveaux que nos quatres fichiers.

Pour faire fonctionner la chose

Dans l’interface privée, les bouton « Configuration » fait alors apparaître un « Gestion des plugins » qui nous permet d’activer notre plugin. On s’en rend compte aussitôt en allant sur la page « Suivre la vie du site » dont le fonctionnement est désormais modifié tant que le plugin est activé.

Retour en haut de la page

Vos commentaires

  • Le 25 octobre 2007 à 18:38, par Hada de La Luna En réponse à : Plugin « Syndiquer par mot-clef ou par langue » (spip 1.9) - pour les langues pas de problème, par contre pour les mots clefs...

    Bonjour,  ;o)

    J’ai mis ce très intéressant plugin dans le dossier plugins d’un Spip 1.9.2b...

    J’ai activé le plugin...

    Et dans le backend, il s’affiche :

    Syndication par mot-clef

    Vous pouvez aussi limiter la syndication aux thèmes qui vous intéressent :

    Syndication selon la langue des articles

    Vous pouvez aussi limiter la syndication aux articles d’une certaine langue.

    Actuellement dans ce site, il y a des articles rédigés en :

    • RSS fr

    Alors le site étant franco-français, c’est bon de ce coté là, mais mes 18 mots clefs je ne les voit pas du tout...

    Une piste pour résoudre ce mystère ? J’ai loupé une marche en installant ?

    Merci d’avance de vos réponses :o)

    Répondre à ce message

  • Le 27 mars 2008 à 20:45, par archi02 En réponse à : Plugin « Syndiquer par mot-clef ou par langue » (spip 1.9)

    Bonjour,

    Je ne suis pas encore très calé en spip, d’où ma question.

    Comment puis-je faire si je veux modifier le titre des flux des rubriques ou des mots clé ?
    Par exemple pour faire en sorte que le titre du flux indique : le nom du site comme actuellement, mais suivi du nom de la rubrique ou du mot-clé en question.

    Merci !

    Répondre à ce message

  • Le 16 juillet 2007 à 18:24, par livier En réponse à : Plugin « Syndiquer par mot-clef ou par langue » (spip 1.9)

    A mon humble point de vue la modification du fichier ’backend.html’ de la distribution ne se justifie pas pour faire fonctionner la syndication par mot_clef. La présence du filtre id_mot ? fait l’affaire, et le trrait du filtre branche ? ne fait que d’enlever la possibilité de syndiquer aussi une rubrique et ses sous rubriques au cas ou un utilisateur le souhaiterait.

    En d’autres mots : http://le_site_poussin.net/spip.php?page=backend&motxxx et http://le_site_poussin.net/spip.php?page=backend&rubriquexxx doivent fonctinner d’origine tous les deux ... Alors, restons simples ;-)

    Répondre à ce message

  • Le 6 juillet 2007 à 11:44, par wattazoum En réponse à : Plugin « Syndiquer par mot-clef ou par langue » (spip 1.9)

    hello,

    Il est magnifique ton plugin. Figure toi que j’ai failli, changer de système de publication à cause du manque d’un système de syndication par rubrique et par mot clé . Mais là tu me sauves .

    Merci beaucoup.

    PS : A mon humble avis , tu devrais intégrer ton hack dans le plugin par défaut. Ce n’est qu’un + .
    PSS : ce serait bien de rendre la liste des rubriques récursives . de sorte à ce que l’on puisse syndiquer les sous rubriques aussi .

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d'abord sur gravatar.com (gratuit et indolore) et n'oubliez pas d'indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.

  • Navigation AJAX

    31 janvier – 18 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)