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

  • 1

    depuis qq temps et sans doute depuis la maj de qq plugins... dont spip2spip...
    spip2spip ne fonctionne plus...

    j’ai bien le log qui me dit que la synchro se fait, mais dans le mail qui est envoyé, j’ai un message sans numéro d’article...

    Les salariés de Marechal/Veninov protègent leur usine
    Consulter l’article importé :
    http://gec.venissieux.org/ecrire/?exec=articles&id_article=

    et de fait, j’ai ce message toutes les 2h, puisque l’article n’est pas créé...

    dans les logs spip, l’erreur vient de SQL...

    Erreur 1054 de mysql : Unknown column ’s2s_url’ in ’field list’INSERT INTO spip_articles (lan

    effectivement, je ne vois pas de s2s_url dans la table spip_articles...

    donc sans doute l’erreur vient du passage en spip 2.1.2 qui a regénéré une table article standard ? je ne devrai alors pas être tout seul,...

    bien embetant tout ca... ne serait-il pas judicieux de prévoir une table spécifique à s2s plutot que de surcharger la table spip ?

    • bonjour,

      votre plugin n’a pas du se mettre bien à jour.
      en effet à partir de la version 2.3, le plugin ajoute 2 champs sur la liste spip_articles
      vous pouvez le faire à la main via phpmyadmin

      ALTER TABLE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9hcnRpY2xlczwvY29kZT4="></span> ADD <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+czJzX3VybDwvY29kZT4="></span> VARCHAR( 255 ) NOT NULL ;
      ALTER TABLE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9hcnRpY2xlczwvY29kZT4="></span> ADD <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+czJzX3VybF90cmFkPC9jb2RlPg=="></span> VARCHAR( 255 ) NOT NULL ;

      On a préféré ajouter 2 champs sur la table spip_articles que de créer une autre table pour des raisons de simplificité et pouvoir exploiter directement sur ces données (url d’origine de l’article, url d’origine de la traduction). sans ajouter une boucle supplémentaire.

    Répondre à ce message

  • Bonjour,
    toute l’installation sur le site émmetteur et le site récepteur est conforme et va jusqu’à la page syndiquer manuellement avec :

    Nomdusite(flux)
    [Nouvel artilce] titredelarticle
    Consulter l’article importé

    Mais le lien « Consulter l’article importé » renvoi vers: :

    http://www.nomdusite.fr/ecrire/?exec=articles&id_article=
    page obtenue : « Il n’y a pas d’article à cette adresse » et bien sur, pas d’importation ???

    Une piste ? ai-je oublié quelque chose ?

    Par avance, merci.
    AlainF

    Répondre à ce message

  • 4

    bonjour

    je m’occupe d’un site pour une association nationale avec des antennes locales. Pour une antenne, on voudrait reprendre certains articles du site national sur le site local —> spip2spip

    mais après tests, ça ne semble pas fonctionner.
    Le site national est en spip 1.8.2
    le site local en spip 2.1.2 + sarka 3.0.3

    Déjà, est-ce compatible ?

    ensuite, sur le site national, le groupe de motclef a été créé avec dedans, un mot pour une thématique (spip2spipTextereference pour nous)

    sur le site local, j’ai attaché ce mot à une rubrique et configuré spip2spip avec le nom et (j’ai essayé 3 adresses) :
    http://www.cemea.asso.fr/spip.php?page=backend-spip2spip
    http://www.cemea.asso.fr/
    http://www.cemea.asso.fr/spip.php?rubrique95

    rien n’apparait dans les 3 cas. J’ai configuré avec une validation automatique des articles ; idem.

    petit détail, le groupe de mot clef, c’est - spip2spip - ou -spip2spip- ? (sans espaces)

    bref, à l’aide :)

    • bonjour,

      le flux à syndiquer dans le site local pour recuper le site national sera :
      http://www.cemea.asso.fr/spip.php?p...

      pour l’instant, le flux est valide mais incomplet :

      • BON : le mot-clé thématique est disponible spip2spipTextereference
      • PAS BON : on ne voit aucun article selectionné,

      vérifier que vos articles sur le site national sont taggés avec spip2spipTextereference et qu’ils ne sont pas trop vieux (sinon vous pouvez modifier le critère d’age en editant que fichier backend-spip2spip.html du site emetteur)

      pour avoir une idée de flux avec des articles ou faire des tests,, vous pouvez consulter ce flux spip2spip

    • je pense que ça vient de l’âge des articles

      <!-- derniers articles à synchroniser --><BOUCLE_synchro_article(ARTICLES){type_mot=- spip2spip -}{age<7}>

      je suppose que c’est cette ligne à modifier mais l’âge est indiqué en quoi, années, mois, jours ... ? on peut tout simplement enlever cette condition ?

      enfin, où ce trouve ce fichier sur un site en spip 1.8.2 (je serais pas devant la machine alors, les informations les plus précises possible me sont nécessaires).

    • le critère age est en jours, il est possible de le supprimer, dans ce cas, tous les articles taggés sont diffusés

            <!-- derniers articles à synchroniser --><BOUCLE_synchro_article(ARTICLES){type_mot=- spip2spip -}>

      le fichier backend-spip2spip.html se trouve à l’endroit où est installé le plugin

    • merci, on va tester
      question immédiate. Exite t’il un moyen pour différencier la condition âge selon le mot clef employé ?
      peut-on doubler cette boucle en gardant la première tel quel puis en écrivant une atre où type_mot=lemotexact ?

    Répondre à ce message

  • Bonjour,
    Si les champs de la base de données sont préfixés autrement que par spip_, la table articles n’est pas mise à jour avec les champs s2s_url et s2s_url_trad.
    Cordialement,

    Répondre à ce message

  • 2

    Est-il possible d’utiliser ce plugin non pas entre deux sites, mais entre deux branches d’un même site ?

    • non car spip2spip vérifie les doublons : si l’article est déjà présent dans le site, il n’est pas récopié

      A priori c’est inutile au sein d’un même site, il y a d’autres façons de gérer cette problèmatique : alias d’articles, polyhierarchie, mot-clé dans le squelette, ....

    • Merci des piste que vous m’indiquez, je trouverai probablement mon bonheur parmi celles-ci.

    Répondre à ce message

  • 1

    impossible d’importer des articles avec spip2spip, j’utilise une interface sarka spip

    y a t il des erreurs grossieres à ne pas commettre ?
    j’ai installé le plugin sur les 2 sites, un mot clé et l’url sur le modele indiqué
    rien
    merci pour une aide

    • Spip2spip ne semble pas aller chercher les articles dont la date de rédaction est antérieure à la date du jour. c’est la réponse à ma question

    Répondre à ce message

  • 1

    Bonsoir et bravo,

    Quelle est la bonne version à prendre pour importer les événements Agenda d’un site 1.9.2 dans un site 2.0.10 ?

    Et le plugin est-il compatible avec la version 2.1 de SPIP ?
    Si oui, même question que précédemment.

    Merci d’avance

    • bonjour,

      A priori, le plugin est compatible SPIP 2.1. Je vais sans doute l’étendre à d’autres types de flux dans les prochains jours

      Pour les versions, Pour le site SPIP 1.9.2, prendre le plugin 192 et pour le site SPIP 2.1, prendre le plugin 2 (version SVN) ;)

      J’ai essayé de conserver au maximum la compatiblité avec les anciennes versions.

    Répondre à ce message

  • 2

    Bonjour, je souhaite utiliser ce plugins pour diffuser des articles entre 2 sites A et B que j’administre en temps que Ferme à spip.

    Et pour me faciliter la vie, il serait bon que « syndiquer manuellement » soit « syndiquer automatiquement ». Donc que le contenu préalablement sélectionné dans le site A soit automatiquement publié dans le site B sans autre intervention.

    Est-ce possible ?

    Merci

    • hello patman

      oui spip2spip fonctionne automatiquement grace au cron. les articles s’ajoutent automatiquement sans aucun intervention de ta part.

      la fonction syndication manuelle sert uniquement lorsque tu as un soucis ou tu veux tester un flux rss dont tu n’es pas sur

      spipement

      marc

    • Merci Marc.
      Trop impatient que je suis !
      effectivement le CRON s’en occupe tout seul... il fallait juste attendre quelques minutes.
      Ma vie est plus simple maintenant ;-)

    Répondre à ce message

  • J’ai un probleme, apres avoir teste spip2spip sur deux sites, et ca a bien marche mais le jour suivant pas de synchronisation qui opere. Qu’est ce que le probleme ?

    Répondre à ce message

  • Bonjour,

    Votre plugin fonctionne très au niveau de la récupération des articles. Par contre j’ai le problème suivant :
    J’ai créé 3 mots clés pour 3 rubriques. Les articles sont bien présents sur mon sommaire par contre n’apparaît qu’une seule rubrique (celle du 1er mot clé créé).

    Pouvez-vous m’aider ?

    Merci par avance.

    PROBLEME RESOLU ! J’AI CREE DES ARTICLES BIDONS

    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