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

    La version 1.9.2 n’est pas disponible, 404.

    • erational

      nous avons actuellement un problème avec le script générant les archives sur la zone. merci de patienter un peu ou de récupérer directement le script depuis la zone.

    • bonsoir, j’ai installé le plugin sur 2 sites (pour transférer d’un spip 1.9.2 vers un 2.0.8) et mon fichier XML refuse d’afficher plus d’un article :

      -  j’ai utilisé le plugin correctement 1 fois pour recopier 1 article (pour essayer) : Nickel, ça marche !
      -  tenté d’utiliser en ajoutant d’autres articles , et d’autres mots clés dans le groupe - spip2spip - : Rien ne s’ajoute au fichier XML ! il reste tjrs le 1er article que j’avais ajouté.
      -  j’ai vidé le cache, définit un cache de 0*3600 pour la page backend-spip2spip.html, inclus un recalcul avec le var_mode dans l’url... rien n’y fait !
      -  L’adresse de mon flux
      -  En plus j’ai essayé de modifier le nom du mot-clé associé au seul article apparaissant : il change bien aussi dans le flux, merde alors !
      -  c’est donc le fichier backend-spip2spip qui doit me sélectionner q’un seul article je me suis dit ...
      -  j’ai installé la version du plugin pour Spip2.0 sur le site en 1.9.2 ... bizarrement il fonctionne mais le flux reste tjrs inchangé !

      Mon problème est donc simple, mais je ne sais comment le résoudre... un peu d’aide ?

      Cordialement, un mordu de Spip :)

    Répondre à ce message

  • 1
    SapinTremblant

    Bonjour,
    j’ai finalement réussi à faire fonctionner ce plugin entre mes 2 spips. Je me demandais s’il était possible de ré-importer des articles supprimés et si une modification d’un article, sur le site « serveur », pouvait être automatiquement mise à jour sur le site « distant ».

    merci par avance

    • bonjour

      pour ré-importer des articles, il faut vérifier deux choses :

      • que l’article soit présent dans le flux backend spip2spip (il est possible d’éditer le fichier flux pour modifier les critères de sélection (par ex. modifier le nombre d’articles, l’âge de selection ou encore modifier la façon d’on selectionne les articles pas mot-clé ou autres))
      • que l’article ne soit pas présent dans le site destination . Au moment de l’import le plugin vérifie sur dans le site destination si un article possède déjà le même titre (même à la poubelle). Si ce n’est pas le cas, on importe l’article. L’astuce consiste donc parfois à modifier le titre légérement pour forcer le ré-import

      en espèrant que cela puisse aider !

    Répondre à ce message

  • Ce plug-ins peut-il fonctionner pour Spip 1.9.1.
    Une fois installé sous 1.9.1, je ne vois rien apparaître dans le menu Edition et je n’ai pas de groupes de mots clés -spip2spip.
    Peut-être qu’une installation manuelle pourrait résoudre mon problème ?
    Merci pour les réponses.

    Répondre à ce message

  • Philippe Guérindon

    Bonjour,
    J’ai trouvé l’explication de mes soucis.
    -  J’essayais d’importer des articles de mon site sous Spip 1.9.2 vers celui sous Spip 2 dans une rubrique ne contenant pas d’article.
    — j’ai créé un article bidon “en ligne” et la syndication s’est faite immédiatement.

    Conclusion :

    1. ne pas essayer d’importer des articles dans une rubrique vide d’article même si elle a le bon mot-clef.
    2. penser à désactiver le plugin “Belles Puces” le cas échéant.

    Philippe

    Répondre à ce message

  • 3
    Philippe Guérindon

    Bonjour,
    Y a-t-il incompatibilité entre les 2 versions du plugin ? Je fais migrer progressivement un site de Spip 1.9.2 à Spip 2. J’ai créé un sous domaine avec un autre base de données. Pour ne pas tout réécrire, j’ai pensé copier les articles à l’aide de spip2spip.
    -  j’ai mon site d’origine sous Spip 1.9.2 avec le plugin spip2spip pour Spip 1.9 installé manuellement par FTP sur lequel j’ai créé le groupe de mots clés spip2spip avec un mot clé « quisommesnous » affecté à chaque article à exporter.
    -  j’ai mon site en développement sous Spip 2 avec le plugin pour Spip 2 (installation auto) sur lequel j’ai affecté le même mot clé « quisommesnous » sur la rubrique destinée à recevoir les articles.
    -  Pour ne pas avoir à réécrire les boucles et les fonctions, j’ai désactivé des 2 côtés les « belles puces » qui me transforment le groupe de mots clés - spip2spip - en -* spip2spip - .

    A partir de l’espace privé du site sous Spip 2, je vois bien le flux de mon premier site ( http://www.asc-annemasse.com/spip/spip.php?page=backend-spip2spip ) mais je n’arrive pas à importer quoi que ce soit. J’ai toujours le message « aucun article à syndiquer actuellement ».

    N.B. J’ai fait le test avec le mot clé a-brest-B sur le site a-brest.net et j’ai parfaitement réussi à importer les articles avec importation de l’auteur. Est-il motorisé par Spip 2 ?
    -  Je me trompe certainement dans mon site Spip 1.9.2 mais je ne vois pas où !

    Une aide serait bienvenue.

    Merci pour le support.

    l’administrateur du site.

    • Philippe Guérindon

      Bonjour,
      -  Je me réponds à moi-même en attendant des explications.
      La copie de site à site fonctionne si je change les dates de publication en ligne des articles dans le site d’origine sous Spip 1.9.2.
      Spip2spip ne semble pas aller chercher les articles dont la date de rédaction est antérieure à la date du jour. Est-ce que je me trompe ?
      P.G.

    • Philippe Guérindon

      Je termine en faisant les constatations suivantes :
      -  la syndication manuelle ne marche pas depuis mon site en Spip 2 pour importer les articles de mon site Spip 1.9.2.
      -  en laissant faire le cron, j’importe correctement tous mes articles.

      Philippe Guérindon

    • bonjour,
      désolé pour la réponse tardive
      c’est étrange je viens d’installer en local SPIP 2.0 et je réussis à syndiquer votre site sous SPIP 1.9.2 (flux) même en passant pour la syndication manuelle.

    Répondre à ce message

  • Salut, j’ai installé le plugin sur mon blog pour renvoyer des pages vers un blog thématique. Spipclear en mutualisé dans les 2 cas, mais sur deux serveurs différents. C’est ok à un détail prêt : le id_secteur n’est apparemment pas inscrit en base de données du site « receveur ». Du coup, en spipclear le logo du site disparait...

    C’est une hypothèse, confirmée par le fait que déplacer l’article dans l’arborescence de spip résout la chose. j’ai pas vérifié en bdd mais je viens vite faire état de l’hypothèse avant d’oublier... (pas d’accès à la base là présentement)

    Merci pour ce plug !

    Répondre à ce message

  • 1

    Spip2Spip ne marche pas avec Spip 2.0 apparemment...

    Après installation, il me retourne la ligne suivante quand je veux configurer le plugin :

    Fatal error : Call to undefined function debut_page() in D :\www\SITE\htdocs\w\plugins\auto\spip2spip\exec\spip2spip.php on line 40

    Une idée ?

    Répondre à ce message

  • 1

    comment cacher le groupe de mots cles spip2spip ? la boucle donnée dans l’article au dessus (<BOUCLE_listemot(MOTS){id_article}{type!==^[-]}>) semble ne pas marcher ou alors je ne sais pas l’utiliser.

    pour ma liste de mots cles classes par rubrique j’utilise la boucle suivante

    <BOUCLE_groupes(GROUPES_MOTS){par titre}>
    <h4>#TITRE</H4>
    <BOUCLE_mots(MOTS){id_groupe}{par titre}>
    <a href="#URL_MOT ">#TITRE</a>&nbsp;&nbsp;
    </BOUCLE_mots>
    </BOUCLE_groupes>
    </BOUCLE_mots1>
    • une alternative pour cacher les mots-clés spip2spip est d’utiliser les doublons

      <BOUCLE_motspip2spip(MOTS) {type=- spip2spip -}{doublons spip2spip}> </BOUCLE_motspip2spip>
      <BOUCLE_autremot(MOTS){doublons spip2spip}> 
             <a href="#URL_MOT">#TITRE</a>
      </BOUCLE_autremot>

      ps. attention si vous utilisez le plugin belles puces (ou la lame du couteau suisse), le groupe - spip2spip - apparait sous la forme -* spip2spip -
      il faut donc adapter vos boucles en conséquence

    Répondre à ce message

  • 1

    bonjour erational

    un petit message pour te suggerer d’ajouter la gestion des breves et la gestion des sites syndiqués a ce genial plugin spip2spip ( voire meme la fonctionnalité de copie ou deplacement d’une rubrique complete d’un spip a un autre ).

    si besoin je peux aider, notamment en faisant des beta tests.

    je vais aussi regarder un peu le code du plugin pour voir si je pourrai aussi aider sur le code.

    • bonjour neofutur,

      oui sur le principe d’intégrer les brèves et les sites syndiqués (mais pas les articles issus de syndication)
      il faut les proposer en options supplémentaires via la configuration du plugin.
      je préférerai que le plugin de base soit axé sur les articles uniquement.

      pour l’implementation, il faudra être vigilant (brèves uniquement sur les rubriques racines)
      pour l’instant je n’ai pas le temps de coder cela mais libre à toi de commiter, tout est sur la zone

      a++

    Répondre à ce message

  • a ma derniere question, cela concerne les articles deja publies, et j’ai trouve ma reponse, il suffit de re-proposer l’article a la publication et de le re-publier ensuite (si vous avez configure le plugin sur les articles publies). Il faut refaire la procedure de publication en ligne pour qu’ils s’inscrivent dans le back end (qui est recu sur le site recepteur).
    Par contre, il doit y avoir une limite de taille car les articles avec beaucoup de photos empechent la syndication de se faire jusqu’au bout...

    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