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, super et indispensable plugin.
    Juste une question, comment étendre à plus de 7 jours les dates d’importation ?
    Je souhaite transférer un paquet d’articles vers un autre site et je ne sais pas comment (ponctuellement) modifier cette option.
    Merci d’avance
    Yvan

    • il suffit de surcharger le fichier backend-spip2spip-agenda.html avec la durée voulue.

      -  vous recopiez le fichier backend-spip2spip-agenda.html ans votre dossier squelettes
      -  modifier la ligne contenant {age<7} par une durée désirée (ou supprimer si ce critère)

      A noter il existe aussi ce plugin Partageur qui permet aussi de récopier simplement des contenus entre plusieurs SPIPs

    • merci du tuyau mais ça ne fonctionne pas pour les date antérieures.
      Autre souci, aucune image ni fichier ne sont importés (tout comme avec partageur d’ailleurs...
      Un peu perdu..

    Répondre à ce message

  • Bonjour,

    merci pour ce plugin bien utile.

    -  j’ai dû modifier backend-spip2spip-agenda.html pour sélectionner les articles qui m’intéressaient (en particulier, pourquoi limiter par défaut à 7 jours les articles sélectionnés ?) ; je n’ai pas réussi à le surcharger en le recopiant dans le dossier squelettes, la version squelettes n’était pas pris en compte,même en recopiant l’arborescence du dossier plugin... ai-je raté quelque chose ?
    -  le plugin « docker » m’a été très utiie pour ensuite recopier les documents distants en local, peut-être pouvez-vous l’évoquer dans la doc, j’ai eu du mal à le trouver !
    -  un souhait/rêve : que ce plugin puisse également récupérer les points GIS...

    Merci !

    Répondre à ce message

  • Bonjour,

    Dans la suite de mon dernier message, la synchronisation fonctionne maintenant, mais l’importation des images ne fonctionne pas correctement.
    Les documents et images de l’article d’origine sont bien importés dans le nouvel article du site récepteur, mais l’intégration des images ne s’est pas faite. Les codes d’intégration des images ont tout simplement été supprimés dans le process.

    Répondre à ce message

  • 1

    Bonjour,

    J’essaye de configurer la synchronisation d’articles entre deux site en SPIP. Le site emmetteur est en spip 3.0.16 avec le plugin spip2spip 3.0.3. Le site recepteur est en spip 2.1.25, avec le plugin spip2spip 2.4.3.

    J’ai suivi le guide à la lettre. J’ai sur le site recepteur une rubrique ayant un mot clef du groupe spip2spip, et sur le site emmetteur, j’ai des articles contenant ce même mot clef du group spip2spip. Sur le site recepteur, j’ai ajouté l’adresse du site emmetteur. sur cette addresse, les articles ayant les mots clefs apparaissent bien en tant qu’articles à ajouter : http://www.france-science.org/spip.php?page=backend-spip2spip . Je précise que ces deux sites sont hébergés sur des serveurs différents.

    Seulement, lorsque je tente de synchroniser à partir du site recepteur, j’obtiens l’erreur « avis echec syndication 02 »

    Quelqu’un a-t-il une idée sur l’origine de cette erreur ?

    • J’ai en partie résolu le problème. A des fins de test, j’ai migré mon site emetteur sur le même serveur que le site récepteur, et cette fois la synchronisation fonctionne. Je ne comprends pas bien en quoi cela change quelque chose pour le fonctionnement du plugin. Le flux spip2spip du site emetteur est exactement le même, et les fichiers du site sont accessibles publiquement dans les deux cas...

    Répondre à ce message

  • 5

    Bonjour,

    Il semble que sur la version SPIP 3.0 qu’on n’a pas la page ?exec=spip2spip… (cf. aussi http://zone.spip.org/trac/spip-zone/browser/_plugins_/spip2spip/trunk/prive/squelettes/contenu )
    Est-ce normal ?

    • Je ne comprends pas trop le message. Certains pages sur plugin 2 ont été renommé dans l’esprit de nommage de Z.

      En SPIP 3, le plugin respecte la convention habituelle des autres objets spip à savoir

      •  ?exec=spip2spips : liste l’ensemble des sites SPIP
      •  ?exec=spip2spip&id_spip2spip=XX : liste / éditer un site SPIP2SPIP dont l’id est XX

      on a bien http://zone.spip.org/trac/spip-zone/browser/_plugins_/spip2spip/trunk/prive/objets/contenu/spip2spip.html non ?

    • Oui, justement, selon le renommage Z des pages SPIP 3, il faut un fichier dans prive/squelettes/contenu/
      Donc, pour les pages :
      -  ?exec=spip2spips, on devrait avoir prive/squelettes/contenu/spip2spips.html ;
      -  ?exec=spip2spip&id_spip2spip=XX, on devrait avoir prive/squelettes/contenu/spip2spip.html.
      Tu as bien mis un squelette dans prive/objets/contenu/ mais rien dans prive/squelettes/contenu. De ce fait, SPIP va générer un fichier tmp/cache/scaffold/contenu/spip2spips.html pour construire sa page, puis va chercher /prive/echafaudage/contenu/objets.html et enfin ta page prive/objets/contenu/spip2spips.html… Il serait plus simple d’avoir directement prive/squelettes/contenu/spip2spips.html. :-)

    • j’ai fait le portage quand spip 3 venait de sortir ... n’hésite pas à committer ce que tu suggères.
      merci d’avance !

    • Il n’y a pas de soucis.
      J’ai fait quelques modifications sur le code php (juste pour que ça soit plus lisible dans un premier temps). Je ne suis pas satisfait du squelette html pour le moment. Il faudrait pouvoir mettre en place une pagination…

      J’ai profité pour ajouter une fonction supplémentaire : créer les mots-clés dans spip2spip s’ils ne sont pas présents. C’est réglable depuis le formulaire de configuration du plugin. Bien entendu, pour rétro compatibilité, il est désactivé par défaut.
      J’ai refait aussi l’affichage du rapport de syndication. On passe sur « 2 colonnes » gérées par CSS. Allégement du fond gris.

      Voilà voilà pour le moment. ;-)

    • merci teddy pour ce petit lifting.

    Répondre à ce message

  • 1

    Bsr,

    Les 2 sites SPIP doivent ils être dans la même version ?
    Ou bien peut on, par exemple, importer d’un 1.9.2 vers un 3.0 ?
    Je n’ai pas vu où cela était renseigné ?

    Cordialement

    • le format d’export est commun. donc l’import de 1.9.2 vers 3.0 devrait fonctionner (l’inverse aussi)

    Répondre à ce message

  • 2

    Bonjour et merci pour le développement de ce plugin.

    L’importation des logos dysfonctionne sur mon site.
    Je ne sais pas pourquoi (peut-être parce que mes spip sont mutualisés ?)

    Le top, ce serait que ce plugin importe aussi les champs extra !

    • Je suis d’accord ! ;)

    • Petite mise à jour.

      Le plugin permet d’importer également les champs extra si on touche un petit peu au code php de spip2spip.php dans le dossier /inc.

      Il suffit d’ajouter le nom du champ extra créé dans les emplacements qui mentionnent les champs par défaut de spip (titre, chapo, etc) indiqués.
      Par exemple quand il est mentionné :
      $_soustitre = $article[’soustitre’] ;
      ajouter dessous
      $_nomdemonchamp = $article[’nomdemonchamp’] ;
      etc...

      Il faut le faire à plusieurs endroits dans le php.

      ça pourra peut-être dépanner certains d’entre vous.

    Répondre à ce message

  • Bonjour à tous,
    Le plugin ne fonctionnait pas de mon côté sous spip 3.0.
    En cause une boucle capricieuse dans /spip.php ?page=backend-spip2spip-agenda
    En effet, la boucle <BOUCLE_synchro_article(ARTICLES){type_mot=- spip2spip -}{age<7}> ne semble afficher aucun article (même ceux inférieurs à 7. Il semble que ce soit le critère type_mot qui ne réagisse pas.
    Il me reste à voir exactement de quoi il s’agit mais je partage ce début l’info au cas où elle servirait à quelqu’un.

    Répondre à ce message

  • 1

    Bonjour faisant un usage test de cet excellent plugins... je remarque 2 choses.
    1- Je n’arrive pas à obtenir le logo article du site émetteur (mais les images placées dans le texte, oui).
    2- Si il y a une modification de l’article émetteur, cela ne met pas à jour le site récepteur ou alors si la modification porte sur le titre, j’ai 2 fois l’article en réception.
    Questions : ai-je un problème de logo ou est-ce normal ?
    Comment relier les articles entre eux pour supporter les modifications distantes, sans duplication ?

    • Je rencontre aussi un problème avec les logos.

      Tes sites sont mutualisés ?

    Répondre à ce message

  • Bonjour,

    Comment ce plugin gère-t-il les doublons ? Exemple : un auteur (même orthographe de nom) se trouve sur 2 sites que j’importe grâce à ce plugin sur un « portail ». Comment spip2spip va-til réagir ?

    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