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

  • je ne comprends pas non plus pourquoi cela marche pour un article et pas pour un autre qui est dans la meme rubrique et auquel j’ai ajoute le mot cle spip2spip. D’autres experiences dans ce gout la ?

    Répondre à ce message

  • Indispensable plugin pour moi, merci infiniment...
    simplement j’aimerai demander comment changer spip2spip_fonctions.php pour qu’il importe aussi les articles deja publies . Merci de votre interet,

    Répondre à ce message

  • Moi aussi, Fabrice, j’ai le même problème que toi.
    Je viens de m’y atteler donc, je n’ai pas de solution à te proposer, si tu en trouve une, merci de la partager.

    Répondre à ce message

  • 6

    Bonjour,

    Merci pour ce plugin qui devrait m’apporter beaucoup... quand j’aurais réussi à l’installer :

    Dans Configuration / Gestion des plugins j’ai, à la place de la liste des plugins, « Fatal error : Call to undefined function : sql_insertq() in /home.10.16/basesql/www/plugins/spip2spip/base/spip2spip_upgrade.php on line 14 » après activation de Spip2Spip ...?

    Dans « Edition / Spip2Spip » (Qui s’affiche bien) l’installation se déclenche, se termine... mais n’aboutit pas : Pas de groupe de mot-clés « Spip2Spip » créé... ?

    En revenant sur « Edition / Spip2Spip » cette page ré-affiche « Spip2Spip n’est pas encore installé. Installer Spip2Spip »

    J’ai essayé sur 2 sites différents avec CFG activé, l’un sous Spip 1.9.2c comportant de nombreux plugins, l’autre sous Spip 1.9.2d ne comportant qu’Accès restreint et Forms et Tables ( et CFG) : Même incident

    Un conseil ? Une solution ?

    D’avance merci, j’aimerai beaucoup pouvoir utiliser ce superbe plugin

    • Auto-réponse pour les spipien(ne)s qui rencontreraient le même problème :

      -  Après mise à jour de la dernière version de CFG l’installation s’est faite correctement
      -  Mais des lignes « Warning.../ecrire/public/compiler.php » sont apparues sur CFG et Configuration de plugins liés.
      -  En désactivant Autorité ces lignes ont disparu
      -  Spi2Spip est donc sensible à la fraîcheur des plugins installés avant lui

      Hélas, bien que le site 1 s’affiche bien dans Gestion des sites du site 2 et qu’un mot-clé soit bien associés à des articles du site 1 et à une rubrique du site 2... aucun article n’apparait sur le site 2...

      Bref si dans la forme ça va mieux, dans le fond je ne suis pas plus avancé

    • Dernières précisions :

      En syndiquant manuellement Spip2Spip répond :

      La syndication a échoué : le backend indiqué est indéchiffrable ou ne propose aucun article.

      Alors que le flux s’affiche bien :

      <!-- backend utilisant SPIP2SPIP -->
      −
      	<spip2spip version="1.6">
      −
      	<title>
      Le nom du site 1
      </title>
      <link>http://www.site1.fr/</link>
      <!-- thématiques proposées -->
      <thema>mot-clé1</thema>
      <!-- derniers articles à synchroniser -->
      </spip2spip>

      et qu’un même mot-clé du groupe - spip2spip - est bien sur 3 articles publiés du site 1 et sur une rubrique à la racine du site2

      Mon hébergeur est OVH.

      Je continue de chercher la solution mais si quelqu’un la connaît qu’il n’hésite pas... D’avance merci !

    • Feuilleton suite :

      Après avoir supprimé mot-clé, groupe, Spip2Spip et vidé le cache... pour voir si une nouvelle installation changerait quelque chose, je me retrouve avec le même problème qu’Evelyne Desandre (message du 21 mai) :

      J’ai continuellement le message :
      « spip2spip n’est pas encore installé.

      installer spip2spip »

      même après avoir validé « installer spip2spip »

    • Feuilleton suite 2 :
      A force de tentatives multiples et variées,
      désinstaller manuellement Spip2spip pour le réinstaller abouti toujours (Chez moi) au résultat décrit plus haut) ; mais cliquer sur l’icone « pack » à droite du plugin dans « Gestion des plugins » puis sur « Effacer tout » puis vider le cache puis cocher le plugin et valider puis vider le cache encore abouti à l’installation.

      Ouf ?

      Non -> Retour à la case départ : « La syndication a échoué : le backend indiqué est indéchiffrable ou ne propose aucun article. »

      Pourquoi « animer » ce forum devenu désertique ?
      -  Je m’y sens bien et c’est reposant. Après des jours de bagarre avec un Spip2Spip très prometteur l’on y est tranquille.
      Cependant j’avoue qu’un peu de compagnie ne me dérangerait pas...

    • Hum... je m’ennuie vraiment.

      SPIP2SPIP ça marche chez vous ?

    • Je réponds à moi-même encore une fois puisque je n’ai pas d’autre choix.

      Une piste était : http://forum.spip.org/fr_203763.html

      (J’en profite pour remercier les contributeurs au forum cité) J’ai modifié les fichiers comme indiqué... aucune amélioration pour Spip2Spip.

      Cette piste m’a amené à une mise jour Spip version 1.9.2e... que je ne connaissais pas ... aucune amélioration...

      Je ne manquerai pas de me tenir au courant de mes recherches de solution à mon problème Spip2Spip... si elle existe (?)

    Répondre à ce message

  • 4
    Christian

    La description du plug-in me fait envisager un montage un peu tordu qui répondrait à un vieux besoin pour moi :

    1- soit un site SPIP sur un serveur principal, toujours en ligne.

    2- soient des rédacteurs, souvent déconnectés (mobilité), mais dotés de portables possédant un site SPIP installé en local.

    Les rédacteurs écrivent sur leur site local et synchronisent lorsqu’ils sont de nouveau en ligne. Bien sûr, chacun aurait sa propre thématique, pour éviter les incohérences.
    Est-ce que cela vous paraît jouable ? Y’aurait-il une alternative plus simple (que je n’aurais pas vu) ?

    • idée originale

      • la synchronisation des ordis portables depuis le serveur principal ne devrait pas poser de problèmes. les auteurs récupéront les derniers articles du site principal.
      • l’export des rédacteurs vers le serveur principal va poser un problème car le site principal a besoin de l’adresse des flux SPIP2SPIP des rédacteurs pour les importer. il faudrait que les rédacteurs aient un système à la dynDNS pour que l’on puisse accèder à leurs serveurs locaux.

      une alternative serait une solution de push (voir les archives de spip-contrib), c’est à dire publier un article en envoyant un email.

      bonne chance

      ps. pour infos, certains personnes ont déjà utilisé spip2spip pour importer dans spip des articles venant des sites dynamiques non-spip.

    • Christian

      Merci pour les encouragements !
      Si une IP fixe des serveurs mobiles est tout ce qu’il y a de requis, ce sera bon : les utilisateurs auxquels je pense seront assez dégourdis pour passer à travers un proxy (ou tunnel ou VPN, on verra) dont le serveur SPIP « principal » guettera les flux sortants.

      Je vais essayer de tester ça dans un délai « raisonnable »... et je vous tiendrai au courant...

    • Hello :)

      Je me permet de remonter ce forum parce que l’idée proposée est (comme le plugin, hein Erational ? ;) ) tout simplement géniale !

      Qu’en est-il donc de tes cogitations Christian ?

    • Pas avancé, désolé. Vacances, puis rentrée avec trop de priorités divergentes...

    Répondre à ce message

  • 1

    Automatiser l’installation de la table supplémentaire et l’intégrer dans les sauvegardes

    Ca devrait être bon maintenant

    Répondre à ce message

  • 2

    Merci par le plugin !

    Il serait possible creer les canales temathiques sans recopier le contenu ? Simplement montrer les articles comme la syndication classique, mais parmi les canales temathiques, et opcionelment l’importation « manuelle » de quelques articles selectionés...

    • erational

      pour ne pas recopier les articles, il suffit de ne pas attribuer des mots-clés thématiques aux rubriques (pas de destination = pas d’import)

      pour l’importation manuelle, cela me semble difficile à mettre en place simplement. le but du plugin est de soulager les rédacteurs
      par contre on peut choisir le statut de l’article importé : proposé, publié, à la poubelle, .... si tu choisis « proposé à la publication » et tu effectues la modération, cela devrait répondre à tes besoins d’importer qq articles ponctuellement.

    • « pour ne pas recopier les articles, il suffit de ne pas attribuer des mots-clés thématiques aux rubriques (pas de destination = pas d’import) »

      alors, il montre les articles syndiques pour les publiquer par syndication dans le site comme d’habitude ? et alors, il ne serait possible de les creer un bouton pour forcer son importation individuellment ? Ce bouton « lierait » l’importation ¿no ?. Je ne sais trop de php et par cela je ne te peut aider, mais dans tu code, il serait dificile ou lourde inclure cette option ? et un menu deroulant pour selectioner la rubrique de chacun ?... ;-)

      Merci par tout.

    Répondre à ce message

  • 4

    Excellent,

    Je m’en vais le tester de ce pas.

    Suggestion : serait-il possible dans un avenir pas trop lointain d’intégrer également les événements du plugin Agenda ?

    • Si cela vous interesse, je viens de finaliser une version pour importer les evenements agenda, et egalement permettre la mise a jour de l’article et des evenements.

    • excellent, spip2spip est sur le SVN. le plus simple est que tu commites directement sur la zone

    • Oui !

      Alors là je dis merci et bravo !

      On est à un petit commit et je pourrais enfin envisager de partir en vacances.

    • Voici le zip car spip-zone met trop de temps a répondre :

      http://fblutch.free.fr/spip2spip/spip2spip.zip

      a vous de me dire si ça marche chez vous, je suis en 1.9.2 moi
      c’était pour un projet ou j’avais besoin que les articles soit identique pour qu’il n’y est qu’une seul saisi.

      Voila voila

    Répondre à ce message

  • 1
    Evelyne Desandre

    Bonjour

    J’ai continuellement le message :

    "spip2spip n'est pas encore installé.
    
    installer spip2spip"

    même après avoir validé "installer spip2spip"

    En désespoir de cause, j’ai créé, en me fiant au fichier spip2spip_install.php, manuellement la table et le groupe de mots-clefs , mais cela ne semble pas pris en compte puisque j’ai toujours le même message.

    Précision : j’ai plusieurs préfixes dans ma table et j’y ai fait attention lors de la création. mais spip2spip peut-il reconnaitre le bon préfixe utilisé ?

    Un conseil ? Une piste ?

    merci

    • bizarre, utilisez vous des préfixes de tables non standards ?
      regardez votre log spip ou essayer de debugger apres la ligne 58 de /exec/spip2spip.php
       $sql = "SELECT COUNT(titre) AS c FROM ".$table_prefix."_groupes_mots WHERE titre='- spip2spip -'";
      ajouter
      echo $sql; pour voir la requete qui sort

    Répondre à ce message

  • bien vu mais le duplicate content vous y avez pensé ? Je m’explique google ne referencera qu’une seule des pages, donc le site de l’article original pourra par exemple simplement disparaitre de google ...

    Cédric
    Commodo, agence conseil en publicité

    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