Mode de fonctionnement
Ce plugin recopie les flux RSS (articles syndiqués) en articles
- reprise du contenu du flux
- crée l’auteur s’il est mentionné dans le flux
- ajoute les documents distants présents dans le flux
- dans le champs URL de l’article on indique l’adresse de l’article d’origine
Pour éviter les doublons et les imports successifs, une fois l’article créé, l’article syndiqué est rejeté (ce qui permet de suivre où en sont les recopiés).
Via cfg (configuration) il est possible de choisir :
- le statut des articles (proposé ou publié)
- le mode de fonctionnement :
- automatique : tous les sites syndiqués validés sont recopiés
- manuel : il faut sélectionner manuellement les sites syndiqués sur lequel on veut que la copie soit active
- s’il faut être averti par e-mail à chaque flot de recopies (qui ont lieu tous les 10min)
- s’il faut copier le logo du site comme logo d’article (facultatif car peut générer beaucoup de fichiers) (déprécié, utiliser plutôt la liaison avec la table spip_articles_syndic)
En mode automatique, pour éviter la saturation de la base, tous les articles syndiqués de plus de 2 mois sont effacés (inutile donc de cocher l’option).
Installation
Télécharger et installer comme un plugin habituel
Recommandations
Lorsque vous ajoutez un nouveau site à syndiquer :
- bien choisir la rubrique où vous référencez le site. c’est là que les articles seront copiés
- choisir l’option « le contenu complet des articles (au format HTML) » si vous voulez récupérer l’intégralité du contenu (et non son résumé). (Cette option est automatiquement validée si vous êtes en mode manuel)
- ne pas oublier de valider le site (statut vert « validé »)
En terme de squelette :
- En mode automatique, il est recommandé de ne pas utiliser la boucle
SYNDIC_ARTICLES
car les objets ne seront pas stables (en permanence copiés et effacés pour devenir des articles). - En mode manuel, vous pouvez ajouter le critère
{rssarticle=non}
à vos bouclesSYNDIC
pour ne traiter que les sites dont les articles syndiqués ne sont pas recopies
Le plugin peut créer beaucoup d’articles rapidement, il est donc conseillé d’être précis dans les flux RSS que vous soumettez.
Par exemple sur un site SPIP
au lieu de soumettre le flux général d’un site de type http://www.a-brest.net/spip.php?page=backend
Préférez un flux plus restreint, plus thématique
- le flux d’une rubrique ex.
http://www.a-brest.net/spip.php?page=backend&id_rubrique=161
- le flux d’un mot ex.
http://www.a-brest.net/spip.php?page=backend&id_mot=16
Liaison tables articles et sites
Le plugin crée une table spip_articles_syndic qui permet de lier l’article recopié et la fiche du site.
Voici par exemple une boucle qui permet d’afficher la fiche du site depuis l’article recopié :
<BOUCLE_art_principal(ARTICLES){id_article}>
...
<BOUCLE_art_origine(ARTICLES_SYNDIC){id_article}><BOUCLE_infosite(SYNDIC){id_syndic}>
<div class="info_site">
<h1>#NOM_SITE</h1>
#DESCRIPTIF
[<small>URL: <a href="#URL_SITE">(#URL_SITE)</a></small>]
</div>
</BOUCLE_infosite></BOUCLE_art_origine>
...
</BOUCLE_art_principal>
Historique
Version | Date | Descriptif |
1.4.0 | septembre 2023 | compatible SPIP 4.2 |
1.3.0 | janvier 2022 | compatible SPIP 4.0 |
1.1.5 | 14 août 2017 | compatible PHP 7.0 |
1.1.3 | 13 novembre 2014 | compatible SPIP 3.1 |
1.1 | août 2012 | version bêta pour SPIP 3.0 |
0.5 | août 2011 | date de l’article est celle du flux. Ajout d’une page pour forcer la copie manuellement |
0.4 | avril 2011 | performance (déclaration table via pipeline) |
0.3 | avril 2010 | choix du mode : automatique ou manuel |
0.2 | septembre 2009 | ajout de la liaison l’article et site |
0.1 | juillet 2009 | sortie initiale |
Avertissement
Ce plugin modifie globalement le fonctionnement de la syndication. Il répond à un besoin très particulier de sites qui veulent récupérer beaucoup d’informations de flux extérieurs (RSS, ATOM) et de pouvoir les re-travailler dans le flux habituel des articles SPIP (par exemple, les déplacer, les éditer, faire le lien faire l’auteur, ajouter des mots-clés, ....) ce que ne permettent actuellement pas les articles syndiqués.
La solution basique à base de boucles et sans ce plugin
Pour les autres sites, si vous désirez simplement afficher une rubrique type revue du presse, la solution la plus simple et économique est de le réaliser sans ce plugin au simple niveau du squelette.
Par contre, vous n’aurez pas la possibilité d’éditer et d’intervenir sur les articles syndiqués (sauf les effacer) (c’est ce que permet le plugin)
Par exemple, je veux créer une rubrique regroupant les informations de 3 maisons de la culture (MJC)
- créer une rubrique « Actualités des maisons de la Culture »
- dans cette rubrique, ajouter les 3 flux RSS des sites de MJC. choisir l’option « le contenu complet des articles (au format HTML) »
- compléter au besoin votre squelette.
Si ma rubrique possède le numéro 34, cela donne rubrique=34.html
<BOUCLE_rub_principal(RUBRIQUES) {id_rubrique}>
<html ...>
....
<BOUCLE_articlesyndic(SYNDIC_ARTICLES)
{id_rubrique}{pagination 10}{age<180}{par date}{inverse}>
<div class="article">
<h1><a href="#URL_ARTICLE">[(#TITRE*)]</a></h1>
[<div class="enclosures">(#TAGS|afficher_enclosures)</div>]
<small>[(#DATE|affdate_court)][, <:par_auteur:> (#LESAUTEURS)]
[ — <em>(#TAGS|afficher_tags)</em>]
</small>
[<div class="texte">(#DESCRIPTIF|image_reduire{500})<br class="nettoyeur" /></div>]
</div>
</BOUCLE_articlesyndic>
[<p class="pagination">(#PAGINATION) - #GRAND_TOTAL billets</p>]
</div>
</B_articlesyndic>
...
</html>
</BOUCLE_rub_principal>
Documents images associées au flux rss
La configuration du plugin propose d’« utiliser le plugin ressource
pour afficher ensuite les images.
Dans ce cas, il peut être nécessaire de définir la constante _RESSOURCE_LIBRAIRIE_SEULEMENT
dans votre fichier mes_options, afin que le plugin ressource
n’interfère pas avec vos contenus.
Voir Utiliser « ressource » en tant que librairie de fonction".
Astuces
La copie des articles syndiqués en articles spip se fait automatiquement par le mécanisme du cron (génie) tous les 10 minutes.
Si vous voulez forcer manuellement cette recopie, vous pouvez le faire de la page « Maintenance > Tâches de fond » et cliquer sur la tâche « rssarticle_copie »
Discussions par date d’activité
71 discussions
Bonjour, merci pour ce plugin, cependant j’ai un soucis bizarre.
Installé sur un spip en local (avec easyphp), ce plugin fonctionne très bien, mais en l’installant sur mon espace perso chez free (pour des tests plus poussés). La création des articles se fait bien, mais elle donne une date de publication improbable « 1er janvier 1970 »... Je ne comprends vraiment pas d’où pourrait venir ce soucis...
Si quelqu’un a une idée je suis preneur...
pour la date, le 1er janvier 1970 est un bug classique .Le problème vient peut-être du flux RSS émetteur
Pouvez vous vérifier la date du site RSS émetteur :
Bonjour, la date est formatée ainsi :
Tue, 12 Jul 2011 07:14:31 GMT+00:00
Bonjour, et d’abord merci pour ce plugin. :
Je l’ai testé à l’instant avec http://seenthis.net/people/notabene/feed
Effectivement on a un problème de date.
Le code de la date pour les articles est du type :
Et pour un article ancien (No labels on radio buttons...) :
En testant en local, il importe bien tous les articles, mais ils sont tous à la date et heure courante au moment de la conversion RSS vers article.
À ta disposition si tu as besoin d’informations de debug plus complètes.
bonjour,
suite à vos demandes, j’ai modifié le comportement du plugin, la date de l’article recopié est maintenant la date indiquée dans le flux et non la date d’import.
j’ai aussi ajouté une page cachée (pour les admins)
?exec=rss_article
qui permet de forcer la copie manuellement sans passer par le cron (genie).Cela peut être pratique en période de tests ou si on est pressé.
Génial, merci, ça marche très bien !
Répondre à ce message
Cher erational, me permettez-vous que je commite cela ?
Cela qui permet de mettre à jour les dates d’une rubrique où l’on vient d’ajouter un article issu d’un flux rss lorsque ces articles sont directement publiés. Et donc de trier par date ces rubriques.
- dans le fichier genie/rssarticle_copie.php
- on ajoute cet include en tête du fichier (vers la ligne 135)
- puis on insert ce code après la fonction de dépublication de l’article syndiqué
Bonjour, désolé pour ma réponse tardive (vacances ...),
Je n’ai pas testé votre code mais cela me semble bien.
N’hésitez donc pas à commiter. merci !
Répondre à ce message
Bonjour,
Est-il possible de ne plus créer des auteurs des articles syndiqués en tant que rédacteurs ?
Je souhaiterai simplement que ceux-ci apparaissent en sous-titre d’article.
Est-ce dans le fichier rssarticle_copie.php qu’il faut intervenir et comment ?
Merci pour votre aide.
Répondre à ce message
Bonjour,
En utilisant le pipeline « declarer_tables_auxiliaires », comme par exemple dans le plugin « Accès restreint 3 », on peut éviter de mettre une inclusion de ’base/rssarticle’ dans le fichier rssarticle_options.php, ce qui est préférable en termes de performances (les fichiers d’option sont chargées à chaque consultation de page).
Par ailleurs, pourquoi est-ce que le pipeline « post_syndication » n’est pas utilisé ?
Cordialement
très bonne suggestion, n’hésite pas à commiter
Bonjour,
Je n’ai pas les droits pour commiter. Aussi, ci-joint le fichier ZIP du plugin, basé sur la version du 10/02/2011, dans laquelle j’ai modifié les 3 fichiers : plugin.xml, rssarticle.php, rssarticle_options.php.
Les modifications que j’ai apportées sont clairement délimitées dans le code.
J’ai utilisé le plugin « declarer_tables_auxiliaires » ainsi que « declarer_tables_interfaces » (pour déclarer la jointure).
Cordialement
C’est parfait, je viens de le commiter 47161.
Merci pour ce code qui permet de gagner en performance.
Répondre à ce message
Bonjour,
Je suis occupé à mettre en route un site qui collationne des fils RSS liés au dangers et au risques (http://filinfo.dangers-et-risques.net). Je souhaiterai publier ces articles dans leur langue d’origine en permettant, via la gestion multilingue et la sélection de la langue au menu, de « filtrer » les news en fonction de ses connaissances linguistiques (en particulier filtrer les news en allemand pour ceux qui y seraient allergiques). Y a-t-il un moyen simple de mettre en oeuvre cette fonctionnalité (autrement qu’en ajoutant un mot clef au site et en bidouillant les squelettes) ?
D’avance merci de vos réponses.
Cordialement
Répondre à ce message
Bonjour, j’ai installé le plugin mais j’ai un problème, en fait la source et l’url de l’article d’origine n’apparaissent pas sur les articles publiés. Pouvez-vous m’aidez car je trouve pas de solution. Cordialement.
Répondre à ce message
Je regarde ce plugin avec grand intérêt, mais une chose me manque en l’état : le flux auquel j’abonne mon SPIP contient des tags (appelés aussi categories dans certains formats de syndication), que je voudrais transformer en mots clefs SPIP.
De manière générale, ce serait pas mal de pouvoir configurer le plugin pour qu’il, au choix :
- ignore les tags
- ajoute à l’article les mots clef d’un groupe (sélectionné par configuration) dont le nom est égal à un des tags
- crée dans un groupe (sélectionné par configuration) les mots clefs nécessaire, et les ajoute à l’article
par rapport aux mots-clés / tags / catégories, le problème est que l’on tombe vite dans des cas particuliers selon les besoins de chacun.
Je suis d’accord avec toi sur les 3 principes d’import des mots-clés (d’ailleurs c’est que j’ai fait sur le plugin SPIP2SPIP où l’on peut choisir l’’import des mots-clés et la facon de les importer (nouveau groupe ou groupe existant)
Ensuite si on adopte ce principe, il faudrait que stocker ces préférences pour chaque site sur lequel on active la recopie. J’ai peur que l’on tombe vite dans une usine à gaz mais si cela te dit de lancer un dév. n’hésite pas.
Pourquoi ne pas en faire une préférence globale plutôt que site par site ?
Parce que tout dépend, déjà, en amont, de la nature du flux et de ce pourquoi tu le récupères.
Sans compter que dans ton cas, tu risques de te retrouver avec une quantité de mot clés impressionnantes, entre les doublons, les erreurs d’orthographe, etc... Qui peuvent rendre la chose assez imbuvable à terme...
Quand le cas de mon besoin précis, c’est moi qui défini les tags qui seront dans le flux, donc je n’ai pas trop de risque.
Mais si j’ai beaucoup de mots clefs, j’utiliserais de toute façon un nuage ne montrant que les plus courants.
Répondre à ce message
Bon alors Erationnal, ce n’est pas la première fois que je te le dis mais il faut que tu arrêtes de faire des plugins aussi géniaux maintenant ! Ça suffit ! je complexe pendant des semaines derrière moi :-D
Par contre, je profite de la tribune : Je viens de l’installer pour syndiquer dans une rubrique « médiathèque » des flux thématiques en provenance de Google et Dailymotion.
En gros, je fais une recherche sur les plateformes sus-citées, et je syndique la page de résultats, ca permet au proprio du projet en question de maintenir une espèce de YouTube-Like consacré à sa thématique directement et sans effort et ça marche du tonnerre de Zeus, il adore, tout ça... Sauf que :
Il ya quand même un truc bien weird, c’est le contenu du #TEXTE qui est récupéré lors de la conversion en articles : dans le cadre de ces 2 sites là, ce qu’on récupère, c’est du HTML tout pas beau tout pas conforme.
Du coup, je suggererais bien de mettre en place une moulinette pour traiter les données avant ou pendant l’import pour ne ressortir que du texte sans balisage. On peut éventuellement choisir de rendre ce traitement optionnel en fonction de la qualité des sources mais ca serait super pratique.
Je le ferais bien si je n’avais pas 5 mains gauche en matière de PHP mais je risque plus de tout casser qu’autre chose en fait...
Sinon, pour le reste, rien à redire, c’est vraiment génial. Merci :-)
bonjour,
le plugin ne fait que convertir les objets « articles syndiqués » en « articles SPIP ».
En général avec ce plugin, on opte pour la syndication complète (article complet en HTML au lieu d’un simple résumé) pour obtenir un article en entier. C’est donc logique d’obtenir du HTML ....pas beau et pas conforme ....si le flux distant ne l’ait pas.
Pour résoudre ton problème, tu peux essayer
Coté squelette
au niveau de l’affichage des articles récopiés, de filter le HTML obtenu :
[(#TEXTE|supprimer_tags)]
[(#TEXTE|ma_fonction_perso_nettoyage)]
mais tu risques de perdre les vidéos et tags qui insèrent le flash & co
Coté plugin
au moment de la recopie, tu peux injecter une ligne pour nettoyer le HTML
Merci pour le retour, je vais explorer tout ça :-)
Du coup, peut-être serait-il intéressant que le plugin déclare un pipeline sur lequel on pourrait venir se brancher pour faire nos modifications perso...
en effet. l’idée du pipeline est interéssante.
on pourrait proposer aussi en option via CFG de « spipformater » le code HTML du flux RSS. Par exemple q’un
<strong>...</strong>
passe en{{....}}
etc ...Si vous avez du temps, n’hésitez pas à commiter :)
Ah oui, surtout que la fonction
sale()
existe déjà en plusieurs versions à droite à gauche... ;-)Répondre à ce message
Bonjour,
Pour l’instant le plugin attribue à tous les articles la langue par défaut du site. Comment faire, sur un site multilingue, pour que les articles générés soient dans la même langue que la rubrique à l’intérieur de laquelle il se trouvent ? Merci
Je viens de mettre à jour le plugin pour ce cas particulier à savoir :
Dans le cas d’une configuration multilingue
avec le réglage « Activer le menu de langue sur les rubriques ? : » oui
Les articles importés via le plugin ont comme langue la langue de la rubrique (on ignore la langue indiquée dans leur flux d’origine)
Dans les autres configurations
on récupère soit le langue du flux d’origine ou la langue du site (cas de site monolingue)
Répondre à ce message
Ne marche pas sur une 2.1.8 toute neuve avec seulement CFG d’installé = pas de copie des articles
C’est pas vrai, j’ai menti !
Une petite eure après tous les articles sont bien copiés : sans doute une histoire de cron...
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 :
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.
Suivre les commentaires : |