Syndiquer par mot-clef (spip 1.7)

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

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...

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

  1. sur chaque site poussins, je duplique backend.php3 et backend-dist.html

  2. je renomme les copies en backend-mot.php3 et backend-mot.html
  3. j’édite backend-mot.php3 pour qu’il appèle backend-mot.html :

    $fond = "backend-mot";



  4. ensuite, j’édite backend-mot.html :
    // je remplace
    	<BOUCLE_10recents(ARTICLES){lang ?}{branche ?}... >
    // par
    	<BOUCLE_10recents(ARTICLES){lang ?}{id_mot ?}... >


    • 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/mot.php3 ?id_mot=xxx)
  7. puis, dans le site « maman_poule », je syndique le site poussin avec un lien sur le backend-mot.php3
    // je remplace xxx par l'id du mot-clef que je souhaite remonter
    www.leSitePoussin/backend-mot.php3?id_mot=xxx

Dès lors, le site « maman_poule » verra s’afficher les articles du site poussin affublés du mot-clef choisi et non plus tous les articles de telle ou telle rubrique. Il suffira donc au webmestre du site « poussin » de créer un mot-clef « ça_remonte » ou « notre_best_of » pour choisir lui-même ce qu’il fera publier vers le site « maman_poule ».

pour aller un chouillat plus loin

-  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 mes deux nouveaux fichiers (backend-mot.html et backend-mot.php3 sont sur chaque site « poussin » (et même sur le site « maman_poule »), il convient d’informer les rédacteurs de cette nouvelle possibilité. On va leur permettre de faire du copier/coller :

  1. J’édite donc maintenant le fichier ecrire/synchro.php3

  2. je repère la ligne « $activer_breves = lire_meta(’activer_breves’) ; »

  3. et juste au-dessus (ou en-dessous, c’est une affaire de goûts), je colle :

    /// suivi RSS par mot clef chez nous le groupe des mots-clefs syndiqué = groupe 8
    /// à faire : remplacer le blabla par une chaine dans le fichier lang
    echo "<p>"._L("Vous pouvez aussi limiter la syndication aux th&egrave;mes qui vous int&eacute;ressent :")."</p>";
    
    $query = "SELECT * FROM spip_mots WHERE id_groupe=\"8\" ORDER BY titre";
    $result = spip_query($query);
    
    if (spip_num_rows($result) > 0) {
       echo "<ul>";
    
       while($row=spip_fetch_array($result)){
          $id_mot=$row['id_mot'];
          $titre_mot = typo($row['titre']);
    			
          echo "<li><a href='$adresse_site/backend-mot.php3?id_mot=$id_mot'><img src='img_pack/xml.gif' border='0' align='middle'> &nbsp; $titre_mot</a>\n";
          }
       echo "</ul>";
    }

  4. 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 » :

Discussion

Une discussion

  • 13

    Bonjour,

    Je suis sous spip 1.9.1 et j’essaie de créer une syndication par mot clé. J’ai donc créé un fichier backend-mot.html comme expliqué mais celui-ci n’apparaît pas lors de la tentative de syndication sur le site « mère-poule ». Seul le fichier backend simple apparaît. Si je modifie l’adresse par après, rien ne change...

    • L’article se réfère à une version 1.7.2 et doit encore passer avec une 1.8 quelque chose. Par contre avec une 1.9 et suivante, je n’ai pas eu le temps de me repncher sur la question.
      Dès que possible...

    • Merci pour la réponse ;-)

      Ben voilà, quand cette contrib sera réactualisée pour le 1.9.1 ainsi que le plug-in « Spip_lettres », tout ira dans le meilleur des mondes du Spip en ce qui me concerne.

    • c’est fait... reste plus qu’à mettre à jour le toutim sur spip-contrib mais ça marche en local avec une 1.9.2alpha svn (ça devrait le faire sans problème avec une 1.9.1).

      J’essaye de te passer le tout en mail perso puis je m’attaque à la mise à jour de l’ancien article.

      romain

    • Pour une 1.9.1, il faut se référer à la nouvelle version de l’article : ici...

    • Bravo. Aussitôt dit...
      Vivement qu’il soit publié car pour l’instant ton lien file vers l’espace privé où je n’ai pas le droit d’aller...

      En tout cas merci, j’ai hâte d’essayer.

    • « ton lien file vers l’espace privé où je n’ai pas le droit d’aller. »

      mais si,
      mais si !

      C’est simple, rapide, sans danger ;-)
      Et puis l’autre côté du miroir permet de s’affranchir des délais de publication qui sont parfois (euh... ont pu être ;-) « un peu long » (parfois).

      Sur la page d’accueil, un login (que tu inventes, plus de 5 lettres) et une adresse mail vailde pour récupérer ton password (que tu pourras modifier une fois à l’intérieur). C’est torché en cinq minutes.

      rom

    • Ben je dois avoir un problème quelque part car j’ai beau vouloir me connecter, j’ai systématiquement un message d’erreur

      « Pour vous identifier de façon sûre sur ce site, vous devez accepter les cookies. Veuillez régler votre navigateur pour qu’il les accepte (au moins pour ce site). »

      Pourtant, je les acceptent ces cookies...

    • Bon, je suis arrivé dans le saint des saints, j’ai tout modifié comme indiqué. Le gros problème, c’est que quand je veux syndiquer le site poussin à partir du site poule, seul le fichier backend de base apparaît. Backend-breves et backend-mots n’apparaissent jamais. Conclusion, j’ai chaque fois tous les articles de toutes les rubriques qui sont syndiqués...

      Où est le problème ?

    • Comme je viens de comprendre (un peu) la création des plugins, j’ai adjoint à la contrib une version fonctionnelle à placer dans le répertoire _plugins_ à la racine du site.

      Ok, ça règle pas ton problème,
      mais bon... ça fonctionne en évitant pas mal de manip.

      rom

    • Ben voilà, le problème est résolu : mon fichier backend-mots était dans le dossier squelettes et non dist...
      Par contre, j’en ai découvert un autre : j’ai environ un quinzaine d’article avec le mot clé en question et seuls trois de ces articles apparaissent sur le site récepteur. Pourquoi les autres restent-ils cachés ?

    • ça peut venir de backend-mots.html lui-même.

      Dedans, à la fin, on trouve normallement :

      <BOUCLE_10recents(ARTICLES) {lang ?}{id_mot ?}
      	{par date}{inverse}{0,10}{unique}>
      <BOUCLE_a(BOUCLE_un_article)></BOUCLE_a>
      </BOUCLE_10recents>
      
      <BOUCLE_tres_recents(ARTICLES){lang ?}{id_mot ?}
      	{par date}{inverse}{age<3}{unique}>
      <BOUCLE_b(BOUCLE_un_article)></BOUCLE_b>
      </BOUCLE_tres_recents>

      Tu peux jouer sur les critères age< xx ou 0,10. Tu peux essayer tous (ou ’tout’,... voilà que j’ai un doute...) jusqu’à trouver le juste équilibre entre tout, trop et trop peu.

      bon règlages !

    • en cadeau bonux, la possibilité de syndiquer les articles selon la langue dans laquelle ils ont été rédigés.

    • Bon, on approche du but : j’ai plus d’articles qui s’affichent, mais ça ne dépasse par le nombre de 10. Malgré que les critères soient tous avec « 20 » ou « tous ».

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom