Spip2Spip

Version Plugin

Spip2spip permet de synchroniser le contenu de plusieurs sites SPIP entre eux en étendant le principe de la syndication thématique. Les articles d’un SPIP sont recopiés d’un site à l’autre en conservant leur formatage original.

Fonctionnalités

Spip2spip permet à des sites Spip qui ont des thématiques en commun de s’échanger directement les articles au format Spip.

À la différence d’une simple syndication, l’article va être importé en tant qu’article dans la rubrique du site destination. Cet article importé sera donc éditable et conservera ses raccourcis et le maximum d’informations (auteurs, pièces jointes, mots-clés ....)

Téléchargement et installation

  • Téléchargez le plugin
  • Activez le plugin dans le menu habituel.
    L’activation du plugin crée automatiquement le groupe de mots-clés -spip2spip- qu’il faudra compléter pour tagguer les thématiques à échanger.
  • Renseignez les sites avec lesquels vous voulez importer des informations, en les ajoutant dans le menu édition > spip2spip

Paramétrage du plugin

Dans le menu de configuration, vous pouvez définir vos options d’import :

  • Quel est le statut des articles à importer : proposé ou publié ?
  • Faut-il citer l’adresse d’où provient l’article ?
  • Faut-il alerter un admin par email à chaque syndication ?
  • Faut-il importer / exporter les mots-clés des articles et de ses événements ?
  • Faut-il créer les mots-clés dans un groupé donné ou ré-créer les groupes de mots-clés du site d’origine ?

Via config/mes_options.php il est possible de :

  • Bloquer la récupération du contenu (si la seule information qui nous intéresse, c’est le titre et l’origine du contenu)
  • Bloquer la récupération des documents joints
define('_SPIP2SPIP_RECUPERER_CONTENU', false);
define('_SPIP2SPIP_RECUPERER_DOC', false);

Principe général

spip2spip est une syndication qui est basée sur un groupe de mots-clés commun appelé - spip2spip -

Chaque mot-clé de ce groupe sert à désigner une thématique donnée :

  • créer un mot clé dans ce groupe permet de créer un canal thématique
  • attribuer ce mot-clé à vos articles permet de les diffuser aux autres sites
  • attribuer ce mot-clé à une rubrique permet d’y importer les articles des autres sites

Les sites recopient les articles entre eux grâce au cron :

  • le formatage des articles spip des articles est conservé (raccourcis typographiques, saut à la ligne, insertion des images et documents ....)
  • citation automatique de la source (url de l’article d’origine)
  • reprise de la licence (voir contribution licence)
  • création de l’auteur si celui n’est pas présent le site SPIP cible.
  • les images et documents sont convertis en documents distants
  • les événements liés à l’article si vous utilisez le plugin Agenda 2.0 et ultérieur
  • logo de l’article version 2.3
  • langues, liens de traduction et balises <multi> version 2.3
  • mots-clés de l’article et de ses événements version 2.3

Diffuser de l’information

  1. Allez dans le groupe de mots-clés -spip2spip-
  2. Dans ce groupe, créez un mot-clé par chaîne thématique que vous voulez diffuser : sport, informatique, œnologie, ...
  3. Attribuez ces mots-clés aux articles concernés.

Cela permet à votre site de proposer ses articles à la syndication spip2spip via l’adresse réservée :
Flux simple
http://monsite.org/spip.php?page=backend-spip2spip

Flux complet avec les événements
http://monsite.org/spip.php?page=backend-spip2spip-agenda

Flux de tous les articles d’un auteur
http://monsite.org/spip.php?page=backend-spip2spip-auteur&id_auteur=XX

S’abonner à une chaîne d’information

Je vais maintenant m’abonner à des sites amis pour recopier automatiquement les articles qu’ils proposent.

étape 1 : inscrire les sites amis
Je vais inscrire le flux spip2spip d’un site ami :

Exemple : Je m’abonne au flux spip2spip de
@-brest

étape 2 : s’abonner à un canal thématique
Je me suis abonné à un site, il faut maintenant choisir quel canal thématique m’intéresse.

J’observe donc le flux du site ami :

Exemple : Ce flux XML propose plusieurs « chaînes thématiques » :

  • a-brest-B pour les articles @-brest concernant la bretagne
  • a-brest-F pour les articles @-brest concernant la technologie
  • ...

Je décide de m’abonner à la « chaîne thématique »a-brest-B.

  1. Je crée dans la mot-clé a-brest-B dans le groupe de mots-clés -spip2spip-
  2. J’attribue ce mot-clé à la rubrique dans lequel je veux que les articles distants soient recopiés.

La synchronisation

La syndication se fait automatiquement grâce au cron.
Vous pouvez aussi forcer la syndication manuellement depuis
l’interface privée.

Le plugin examine alors tous les articles proposés et leur chaîne thématique. Si un article correspond à une chaine auquel vous vous êtes abonné, il importe l’article dans la rubrique sur lequel vous avez placé le mot-clé de cette chaîne thématique.

Origine de l’importation stockée par le plugin

2 champs supplémentaires dans la tables spip_articles permettent d’avoir accès à la source distante d’origine de l’article importé [1].

Sont donc stockés :

  • #S2S_URL_SITE_DISTANT : l’URL du site distant (en principe sans / final)
  • #S2S_ID_ARTICLE_DISTANT : l’identifiant de l’article sur le site distant

Vous pouvez par exemple :

  • Faire un lien sur l’article d’origine :
    <a href="#S2S_URL_SITE_DISTANT/?article#S2S_ID_ARTICLE_DISTANT">#TITRE</a>
  • Appeler un squelette sur le site d’origine pour incorporer son résultat à votre page :
    [(#VAL{#S2S_URL_SITE_DISTANT?page=inc_pour_inclusion_distante&id_article=#S2S_ID_ARTICLE_DISTANT}|recuperer_url_cache|table_valeur{page})]

Astuces

Si vous voulez masquer l’affichage du groupe de mots-clés -spip2spip-, vous pouvez utiliser la boucle
<BOUCLE_listemot(MOTS){id_article}{type!==^[-]}>....</BOUCLE_listemot>

Alternative pour masquer le groupe -spip2spip : utiliser le critère doublons

<BOUCLE_mot_cache(MOTS){type=- spip2spip -}{doublons spip2spip}> </BOUCLE_mot_cache>
<BOUCLE_listemot(MOTS){id_article}{doublons spip2spip}>....</BOUCLE_listemot>

Astuces (bis)

Spip2spip version 2.3 ajoute 2 champs supplémentaires à la table spip_articles qui peuvent être exploités éventuellement dans un squelette dans une boucle ARTICLES

  • #S2S_URL l’adresse de l’article d’origine
  • #S2S_URL_TRAD l’adresse de la traduction de l’article d’origine

Astuces (ter)

À l’import, Spip2spip adopte le comportement par défaut de SPIP lors de l’import de données externes : le filtre textebrut s’applique sur tous les champs pour empêcher les injections de HTML, Javascript, XSS ....
Si vous désirez quand même (à vos risques et périls), importer du HTML brut, ajouter dans votre fichier config/mes_options.php

define('_SPIP2SPIP_IMPORT_HTML', true);

Évolutions

version 4.x Compatibilité SPIP 4
version 3.4 Mars 2018 Ajout d’un flux pour exporter tous les articles d’un auteur
version 3.3 Mai 2017 Ajout des champs pour stocker l’origine et de la possibilité de bloquer la récupération du contenu et des documents
version 3.2 Juin 2016 Version SPIP 3.1
Correction de bugs sur l’import de documents et logos
Flux version 1.9 permettant l’import d’auteurs avec le nom comporte une virgule comme SMITH, Robert
version 3 Février 2013 Version SPIP 3
version 2.3 Juillet 2010 Gestion des liens de traduction
Ajout des champs s2s_url, s2s_url_trad à la table spip_articles
support des balises <multi>
version 2.2 Juillet 2010 Import/export des mots-clés des articles et événements
flux version 1.8
version 2.1 Mai 2009 Meilleure gestion des retours à la ligne (flux version 1.7)
version 2.0 Janvier 2009 Sortie de la version compatible SPIP 2
Abandon du mode synchronisation
version 1.7 Mai 2008 Intégration de cfg
version 1.6 Mai 2008 Intégration des objets événements (plugin agenda)
version 1.5 Février 2008 Sortie la version plugin

Alternative

Notes

[1Notez bien que cette source est conservée même à travers des importations en cascade ; par exemple un site A qui importe depuis B qui lui-même importe depuis C : le site A a bien l’information que tel article vient du site C. Cas d’usage : centraliser des articles d’une galaxie de sites pour qu’ensuite des membres de cette galaxie récupèrent certains des articles sélectionnés

Discussion

73 discussions

  • 2

    Bonjour,

    L’import des auteurs avec des virgules ne fonctionne plus. Cela importe deux auteurs.

    Par exemple : « SMITH » et « Robert » pour « SMITH, Robert ».

    <auteurs> <auteur>SMITH, Robert</auteur> <auteur>MEUNIER, Paul</auteur> </auteurs>

    J’utilise les dernières versions : Spip2Spip v4.1.1 et SPIP 4.2.5.

    Merci de votre aide.

    • Je ne reproduis pas le bug.

      Sur spip2spip v4.1.2 et SPIP 4.2.9, les auteurs s’importent bien sous la forme « SMITH, Robert »

    • Effectivement, dans certains flux très lourds, on avait un bug

      Cela doit être corrigé avec la version v4.1.3 du plugin spip2spip.

    Répondre à ce message

  • 2

    Bonjour,
    Je découvre ce plugin et pour le moment je n’arrive pas à l’utiliser.
    Ce que j’ai fait :

    Sur le site source
    Spip2Spip 3.5.0 - stable

    • créer un mot-clé dans le groupe -spip2spip-
    • ajouter ce mot-clé à quelques articles
       

    Sur le site destination
    Spip2Spip 4.0.1

    • créer le même mot-clé dans le groupe -spip2spip-
    • créer une rubrique
    • ajouter ce mot-clé à cette rubrique
    • ajouter le flux dans « Sites SPIP2SPIP »
       

    Malheureusement voici le résultat :

    <!-- backend utilisant SPIP2SPIP   -->
    <spip2spip version="1.9">
    <title>Mon site</title>
    <link>https://mon.url.com</link>
    <!-- thématiques proposées -->
    <thema>essai</thema>
    <!-- derniers articles à synchroniser -->
    </spip2spip>

    Qu’ai-je oublié ?

    La version de SPIP n’est pas la même, mais le problème est en amont puisque le fichier xml ne contient aucun article.

    Merci d’avance de votre aide.

    • La solution de supprimer {age<7} dans la boucle du fichier backend-spip2spip-agenda.html fonctionne.
      Faut-il remettre ce paramètre après l’avoir utilisé une première fois ou n’est-ce pas nécessaire ?
      Pourquoi ne pas modifier le fichier définitivement dans ce cas ?

      Merci à JC, mon Dieu du SPIP, pour son aide !

    • Bonjour.
      J’ai 3 soucis avec ce plugin.
      1) Malgré la case cochée, les mots-clés du site source ne sont pas importés sur le site destination.
      2) Les documents (images, PDF...) ne sont pas téléchargés sur le site destination. Comme je veux à terme supprimer le site source, c’est embêtant.
      3) J’ai remarqué que les codes d’intégration pour une vidéo par exemple était tout simplement effacés du corps de l’article.

      Des solutions ?
      Merci d’avance.

    Répondre à ce message

  • 2

    Bonjour,

    Le plugin me serais bien utile

    est ce qu’il est prévu pour les produits ? Ou bien est-ce que c’est faisable simplement ?

    merci par avance pour la réponse.
    Laëta

    • Non, il n’est pas actuellement codé pour géré les produit.

      Il faudrait le faire en plus, et ce serait sans doute assez compliqué.

    • Tant pis, merci quand même pour la réponse.
      Bonne journée

    Répondre à ce message

  • 5

    Bonjour

    Mes articles sont bien envoyés du site A vers le site B avec les logos d’articles mais pas les images de contenus. Dans mon article A j’écris

    <doc10>

    celui-ci disparait du même article poussé sur le site B. Je n’ai que du texte, si j’ajoute des balises html, elles disparaissent aussi, c’est normal ?

    L’url de mon flux :
    http://dev16.chris.mezcalito.net/spip.php?page=backend-spip2spip

    Merci de votre aide.

    • meme avec

      define(’_SPIP2SPIP_IMPORT_HTML’, true) ;
      define(’_SPIP2SPIP_RECUPERER_DOC’, true) ;

    • Pour le html j’ai réglé avec ça
      define(’_SPIP2SPIP_IMPORT_HTML’, true) ;

      mais pour les images, même si je met ça
      define(’_SPIP2SPIP_RECUPERER_DOC’, true) ;
      ça ne fait rien.

    • Spidermian

      Bonjour,
      Je constate aussi que les documents joints ou intégrés à l’article ne sont pas importés.
      Est ce le fonctionnement normal du plugin ?

      Pour info j’utilise les dernieres versions de spip et de spip2spip.

      J’ai aussi essayé le define(’_SPIP2SPIP_RECUPERER_DOC’, true) ;
      mais bien que sur le site d’envoi les documents etaient bien dans le rss
      ceux-ci n’ont pas été importés sur le site qui devait réceptionner les articles.

      J’ai aussi essayé Partageur qui lui importe bien tout (sauf les dates de publication)
      mais tous les articles ne s’affichent pas dans la liste d’import ce qui rend son
      utilisation impossible aussi d’autant plus que j’ai beaucoup d’articles a importer.

      Du coup je reviens vers spip2spip en espérant un correctif pour les documents joints
      ce qui résoudrait une bonne partie de mes problèmes.

      Merci d’avance.

    • Bonjour vous 2.
      Vous avez trouvé une soluce à votre problème ?
      J’ai le même soucis ...

    • Spidermian

      Malheureusement, je suis toujours bloqué...

    Répondre à ce message

  • Bonjour
    Que voulez-vous dire par :
    « Je crée dans la mot-clé a-brest-B dans le groupe de mots-clés -spip2spip- »
     ?

    Répondre à ce message

  • 4
    Spidermian

    Ayant mis un motcle spip2spip sur un article de mon site je ne vois pourtant rien apparaitre dans le flux xml de spip2spip. j’ai oublié quelque chose ou bien ?

    • Spidermian

      heu... y a quelqu’un ?

    • oui il y a des gens .... et tu as une URL que l’on puisse t’aider ?

    • Spidermian

      Voici ce qu’affiche la page /spip.php ?page=backend-spip2spip

      <!-- backend utilisant SPIP2SPIP   -->
      <spip2spip version="1.9">
      <title>Archives 2000-2018</title>
      <link>http://archives.monsite.com/</link>
      <!-- thématiques proposées -->
      <thema>072018</thema>
      <thema>062018</thema>
      <!-- derniers articles à synchroniser -->
      </spip2spip>

      j’ai environ 1000 articles par mot clé la ca n’en affiche aucun.
      je suis sur SPIP 3.2.1 SVN [24090]

    • Spidermian

      Ok...
      Je viens de virer le age<7 de la boucle
      et maintenant ca fonctionne...

      merci pour votre aide ;)

    Répondre à ce message

  • 3

    Bonjour,

    Ma config : importation d’articles d’un site Spip 1.9.2 vers un site Spip 2.
    Dans cette configuration, l’importation d’un tableau |xxx|xxx| etc. ne conserve pas totalement la mise en page d’origine.

    Je me suis aperçu que le tableau est importé normalement comme une chaine de caractère mais qu’un espace est ajouté après le dernier “pipe” d’une ligne. Cela a pour effet de ne pas revenir à la ligne et le tableau n’est pas interprété correctement. Ainsi, vous récupérez votre tableau à l’identique de celui-ci :

     |ligne 1 avec un espace après le dernier pipe|xxx| |ligne 2 avec un espace après le dernier pipe|xxx| |ligne 3 avec un espace après le dernier pipe|xxx|

    Vous pouvez faire un copier - coller des lignes ci-dessus dans un article pour voir de quoi je parle.

    Il vous suffit d’éliminer ces espaces en trop pour retrouver votre tableau sous sa forme originale.

    Je ne dis pas que le problème vienne du plugin, c’est juste un constat.

    Philippe G.

    • pour les tableaux, il s’agissait d’un bug sur les déclarations de fin de ligne. (\n au lieu de \n\n)
      cela a été corrigé dans la version 2.1 de SPIP2SPIP (mai 2009) (uniquement pour des syndications de SPIP2 à SPIP2 avec cette version)

      cordialement

    • laëtitia

      Bonjour,
      j’ai le même problème avec Spip2Spip 2.4.5 en émetteur et Spip2Spip 3.2.3 en récepteur, un satané espace se faufile à la fin de la ligne, derrière le pipe.

    • Le problème existe toujours pour Spip 3.2

    Répondre à ce message

  • 1

    Bonjour,

    Est-il possible que l’article importé se mette à jour automatiquement quand l’article de base est mis à jour ?

    Merci.

    Répondre à ce message

  • Bonjour,

    Un petit bug il me semble :
    Dans le site cible, je crée une rubrique sans aucun article.
    J’y importe quelques articles du site source qui sont publiés automatiquement.
    Eh bien la rubrique n’a pas été publiée bien qu’elle a reçu des articles publiés.
    En dépubliant/republiant un article importé, la rubrique apparaît alors publiée.

    Répondre à ce message

  • 2

    Bonjour,

    j’essaie de faire fonctionner le plugin sur un intranet/extranet (faire une petite passerelle) :) même en étant connectée la page backend-spip2spip n’affiche pas les articles dont j’ai attribué un mot-clé. Comment cela se fait-il ?

    Outre cette page à ouvrir à « tous », il y a t’il un autre élément à ouvrir via pipeline pour la récupération ?

    Merci :)

    • Bon j’ai corrigé mon erreur ça marche presque bien ! J’ai juste un soucis d’import des documents, l’URL est bien dans le fichier backend mais rien n’atterrit dans l’article importé... J’ai forcé dans les options avec un true.

      Comment ça se fait ?

    • Je me demande s’il n’y a pas un bug lors de la récupération, j’ai aussi le soucis avec les événements qui ne sont pas incorporés alors qu’ils sont bien dans le fichier XML... Comment corriger cela ?

    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