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

Aucune discussion

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