Twitter

En date du 12/01/2023 les API Twitter tierces-parties ont été fermées sans communication de la part de l’entreprise. Le plugin n’est donc plus fonctionnel.

Un plugin qui facilite l’intégration de Twitter dans un site SPIP et permet :

  • d’envoyer facilement des messages avec un ou plusieurs comptes Twitter
  • d’afficher des Widgets standards dans le site public (qui respectent la vie privée des visiteurs)
  • d’utiliser les données de Twitter avec une boucle (DATA)

Le plugin fait office de proxy afin qu’aucune requête ne soit faite par vos visiteurs vers Twitter et éviter tout traçage possible de leur activité (préservation de leur vie personnelle).

Ce plugin intègre les 2 plugins Microblog (dont seule la partie Twitter était encore fonctionnelle) et Twitter Widget. Il les remplace avantageusement pour SPIP 3.

(2020) Attention : suite aux changements successifs de l'API et de la politique de twitter vis a vis de l'usage de son API, il se peut que le plugin ne soit plus opérationnel.

Mode d’emploi

Le plugin s’installe comme tous les autres

Pré-requis

Ce plugin nécessite le module cURL de PHP pour fonctionner.

Configuration

Une fois le plugin activé, il faut passer sur sa page de configuration accessible depuis la page des plugins.

Configurer l’accès à Twitter

Toute l’API Twitter n’étant accessible qu’en étant identifié, il faut y configurer les clés secrètes d’une Application Twitter et ajouter un ou plusieurs comptes que le site pourra utiliser. Cette partie de la configuration est décrite en détail dans Créer une Application Twitter pour utiliser dans SPIP.

Configurer l’envoi de Tweets

Une fois l’application et les comptes configurés, vous pouvez ensuite indiquer :

  • les évènements qui déclencheront l’envoi d’une notification ; pour l’instant 4 types sont disponibles :
    • le post d’un nouveau message de forum (y compris message en attente de modération)
    • la publication d’un nouveau message de forum
    • le passage d’un article en mode « Proposé à la publication »
    • la publication en ligne d’un article.
  • la présence ou non d’une invite de status sur chaque article pour permettre de personaliser le Tweet qui sera envoyé.

Configurer les Widgets

Tout cela concerne la configuration du fonctionnement par défaut des Widgets lorsqu’ils seront insérés dans les squelettes. Ces réglages par défauts sont ensuite personnalisables au cas par cas lors de l’insertion.

Chose importante à noter : les résultats affichés dans les widgets sont récupérés avec le compte de l’utilisateur Twitter par défaut qui a été ajouté auparavant. Les tweets que cet utilisateur ne peut pas voir (comptes bloqués par exemple) ne s’afficheront pas.

Widget de recherche
Il affiche les tweets qui correspondent à une recherche Twitter.

Pour ajouter ce widget dans votre squelette vous pouvez utiliser le code :
#INCLURE{fond=inclure/twidget_search}

Widget de profil
Il affiche tous les tweets d’un utilisateur Twitter

Pour ajouter ce widget dans votre squelette vous pouvez utiliser le code :
#INCLURE{fond=inclure/twidget_profile}

Tweeter un article

Il est possible d’éditer le message qui sera envoyé, article par article, ou de bloquer l’envoi du message pour un article donné. On peut également relancer a posteriori l’envoi du message.

Lorsque vous visualisez le message avant publication de l’article, celui-ci incorpore une url vers la page d’édition de l’article. Si vous ne modifiez pas le message par défaut, l’url sera remplacée par l’url publique lors de la publication. Mais si vous modifiez le message, faites attention à bien donner une url publique de l’article, car le plugin ne touchera plus à votre message personalisé.

Pour rétablir le message d’origine, il suffit d’effacer complètement votre message personnalisé, et d’enregistrer.

Tweeter n’importe quoi !

Le plugin propose aussi une interface pour envoyer un message immédiatement sur n’importe quel sujet. La page est accessible depuis le menu Publication > Twitter

Insérer les Widgets dans le site public

Widget de recherche
Pour ajouter le widget de recherche dans votre squelette insérez le code :
#INCLURE{fond=inclure/twidget_search}
Vous pouvez le personnaliser lors de l’insertion :
#INCLURE{fond=inclure/twidget_search,search=#SPIP,width=200}

Les variables personnalisables sont :

  • search : terme(s) recherché(s)
  • title : titre en clair de la recherche
  • subject : sous titre de la recherche
  • interval : intervalle de mise à jour en millisecondes
  • width : largeur en px
  • height : hauteur en px
  • shell_background : couleur de background
  • shell_color : couleur de police
  • tweets_background : couleur de background
  • tweets_color : couleur de police
  • tweets_links : couleur des liens
  • scrollbar : true/false
  • loop : true/false
  • live : true/false
  • hashtags : true/false
  • timestamp : true/false
  • avatar : true/false
  • toptweets : true/false

Widget de profil
Pour ajouter le widget de profil dans votre squelette insérez le code :
#INCLURE{fond=inclure/twidget_profile}

Vous pouvez le personnaliser :
#INCLURE{fond=inclure/twidget_profile,user=spip,width=200,height=300}

Les variables personnalisables sont :

  • user : nom de l’utilisateur Twitter dont la timeline est affichée
  • rpp : nombre de résultats affichés
  • interval : intervalle de mise à jour en millisecondes
  • width : largeur en px
  • height : hauteur en px
  • shell_background : couleur de background
  • shell_color : couleur de police
  • tweets_background : couleur de background
  • tweets_color : couleur de police
  • tweets_links : couleur des liens
  • scrollbar : true/false
  • loop : true/false
  • live : true/false
  • hashtags : true/false
  • timestamp : true/false
  • avatar : true/false

API tweet()

Ce plugin offre une fonction tweet() que l’on peut utiliser pour envoyer des micro-messages (status) sur Twitter [1].

La fonction s’utilise comme suit :

   include_spip('inc/twitter);
   tweet('Bonjour, monde');

Boucle (DATA){source twitter}

Si vous utilisez Twitter, le plugin permet [2] l’utilisation facile de l’API Twitter dans une boucle (DATA) pour afficher par exemple vos tweets, les tweets de votre timeline, les tweets résultats d’une recherche....

Pour ce faire, il suffit d’utiliser {source twitter,...} dans une boucle (DATA), en y précisant quelle méthode de l’API utiliser (toutes les méthodes GET de https://dev.twitter.com/docs/api/1.1 sont possibles) et les arguments sous forme de query-string.

Par exemple :

Dans un exemple complet, cela donne :

<B_tweets>
<ul class='liste-items'>
<BOUCLE_tweets(DATA)
 {source twitter,search/tweets?q=%23spip}
 {datapath statuses}
 {pagination 10}
>
<li class='item tweet'>
<img src='#VALEUR{user/profile_image_url}' style='float:right' />
from <a href='http://twitter.com/#VALEUR{user/screen_name}'>@#VALEUR{user/screen_name} (#VALEUR{user/name})</a> :
&laquo;<q>#VALEUR{text}</q>&raquo;
</li>
</BOUCLE_tweets>
</ul>
[<p class='pagination'>(#PAGINATION{precedent_suivant})</p>]
</B_tweets>

Attention, il faut bien avoir en tête que les requêtes sont faites à l’API Twitter en utilisant le compte Twitter associé au site, et donc seuls les tweets visibles par cet utilisateur seront listés dans tous les cas.

Flux RSS

Le plugin Twitter génère automatiquement un flux RSS des tweets du compte Twitter par défaut auquel il est associé.

Ce flux RSS est disponible à l’adresse spip.php?page=twitter-backend de votre site (par sécurité, il ne répondra rien si le compte Twitter est protégé).

Le squelette twitter-backend.html peut être pris comme modèle pour générer d’autres flux RSS pour d’autres utilisateurs.

Notes

[1la fonction microblog() héritée du plugin Microblog reste fonctionnelle

[2à partir de la version 1.1

Discussion

54 discussions

  • Demande un peu incongrue :

    -  est-il possible (assez facilement) de faire en sorte que le tweet de publication d’un article soit fait plusieurs fois, à 2 heures d’intervalle par exemple et 4 fois en tout ?

    Je ne sais plus la limite de twitter qui n’accepte pas le même message trop rapproché dans le temps ...

    Ce n’est pas anodin car pour mieux communiquer avec des personnes qui ont des horaires différents, ce serait utile. (On lit ce que l’on voit !)

    Attention je suis assez nul en programmation et je ne sais trop quel(s) fichier(s) modifier ou aménager , ou bien quel META !

    Merci.

    Répondre à ce message

  • 22
    Michel Suquet

    Bonjour,

    nous utilisons votre plugin sur notre site (régionale Apmep Île-de-France) et le tweet généré lors de la publication d’un article ne comprend que le titre de l’article et l’url correspondante.

    Savez-vous comment faire en sorte qu’on ait, sur le tweet généré, le début de l’article (comme cela est fait sur la page d’accueil de notre site) et une image de l’article ? Je crois que cela correspond à un tweet cards mais je ne suis pas sûr.

    Cordialement,

    Michel Suquet

    • Bonjour michel,

      pour améliorer le tweet généré, par exemple ajouter le soustitre, l’intro ou autre balise du genre, il suffit de surcharger le modèle du plugin twitter /www/plugins/auto/twitter/modelesmicroblog_instituerarticle.html

      Après, pour une image, je suis tout comme toi preneur de conseil, ça me parait à priori un poil plus technique.

      ++
      Luc.

    • Michel Suquet

      Bonjour Luc,

      comment réalises-tu cette surcharge ?

      Excuse-moi pour cette question mais je n’ai jamais fait cela et cela ne m’est pas évident.

      Par ailleurs, faut-il d’abord copier le fichier modelesmicroblog_instituerarticle.html dans le répertoire /squelettes/inclusions avant de le modifier ?

      Ne serait-il pas mieux que ces paramétrages apparaissent dans la configuration du plugin ?

      Cordialement,

      Michel Suquet

    • Une surcharge c’est remplacer un squelette par un autre en le mettant dans le dossier squelettes, en respectant le chemin.

      Voir https://programmer.spip.net/La-notion-de-chemin

      Donc si le squelette est directement dans le dossier du plugin, le recopier dans squelettes puis le modifier. S’il est dans le dossier « modeles » du dossier du plugin, le recopier dans squelettes/modeles et le modifier.

      Quand à la dernière question elle est pertinente mais
      1. Il faut avoir une liste claire des options possibles, à l’avance.
      2. Il faut le coder.

    • Michel Suquet

      Bonjour Maïeul,

      si j’ai bien compris, au lieu de recopier le fichier modelesmicroblog_instituerarticle.html dans le répertoire /squelettes/inclusions, je le recopie dans le répertoire /squelettes/modeles.

      Par ailleurs, je n’ai pas compris comment modifier le fichier modelesmicroblog_instituerarticle.html pour obtenir le sous-titre et l’intro. Quelles lignes faut-il ajouter pour cela ? Je pense qu’il doit y avoir aussi une balise pour l’image car dans les résumés qui apparaissent en page d’accueil, il y a aussi une image, même si elle n’est pas au début de l’article.

      Désolé pour mes questions de débutant.

      Cordialement,

      Michel Suquet

    • Michel Suquet

      Bonjour,

      voici le contenu de modelesmicroblog_instituerarticle.html :

      <BOUCLE_art(ARTICLES){id_article=#ENV{id_objet,#ENV{id_article}}}{statut?}{tout}>
      	[(#MICROBLOG)]
      	[(#MICROBLOG|non)
      		[(#SET{url,[(#ID_ARTICLE|generer_url_microblog{article,'','',#STATUT|=={publie}|?{#EVAL{true}}})]})]
      		[(#SET{len,
      		#VAL{260}|moins{#GET{url}|strlen}
      		})]
      		[(#TITRE|textebrut|couper{#GET{len}}|concat{'
      ',#GET{url}}
      			|replace{&nbsp;,' '})]
      	]
      </BOUCLE_art>

      Cordialement,

      Michel Suquet

    • Exactement pour le modèle.

      Vous n’avez jamais fait de squelette (apparement).

      Il vous faut mettre les balise #SOUSTITRE et #INTRODUCTION (en remplacement de #TEXTE).

      Pour l’image, il y a plusieurs manières de gerer les images avec SPIP, et comme je n’ai pas votre site sous les yeux je ne sais pas à quoi vous fait références...

    • Michel Suquet

      Non, je n’ai jamais fait de squelette. Désolé.

      Dans le fichier modelesmicroblog_instituerarticle.html, il n’y a pas #TEXTE. Mais je vois ceci :

      (#TITRE|textebrut|couper{#GET{len}}|concat{'
      ',#GET{url}}
      			|replace{&nbsp;,' '})

      Pour le site, il y a en bas à droite le retour depuis notre compte twitter et voici un article récemment publié (aujourd’hui) : Elle-est-mathophile. L’image apparaît aussi dans le résumé sur la page d’accueil.

      Cordialement,

      Michel Suquet

    • Visibelement votre squelette prend la première image de l’article pour la mettre en une dans le résumé. Est-ce cela que vous souhaitez prendre ?

      un problème avec l’introduction est le nombre maximum de caractère. Il faut je pense s’assurer que le total n’excède pas ce qui est autorisé par twitter...

    • Michel Suquet

      Oui, c’est bien cela, la 1re image de l’article.

      Oui, le nombre maximum de caractères est 140, les images, vidéos, nom de l’utilisateur et liens étant non comptés.

      Au fait, l’introduction c’est bien le début de l’article qui apparaît en une de la page d’accueil ?

      Cordialement,

      Michel Suquet

    • Michel Suquet

      Si je mets ceci dans le fichier modèle :

      [(#TITRE|textebrut|couper{#GET{len}}|concat{'
      ',#INTRODUCTION,' ',#IMAGE-UNE,' ',#GET{url}}
      			|replace{&nbsp;,' '})]

      C’est bon ? Ou c’est n’importe quoi ?

    • a priorier le couper serait plutot à la faim

      [(#TITRE|textebrut|concat{[(' ', #INTRODUCTION|textebrut)],' ', #GET{url}}|replace{&nbsp;,''}|couper{#GET{len}})]

      pour couper le résultat de la concaténation du titre + introduction

      par contre pour image une :
      -  je ne sais pas comment twitter gère les iomages
      -  je ne sais pas comment le squelette les gères

      donc aucune idée

    • Pour info il y a un modèle ici pour Mastodon qui accepte 500 caractères (donc un peu plus long)
      https://github.com/Cerdic/mastodon/blob/master/modeles/mastodon_instituerarticle.html

      Sinon pour les images, il faut renseigner les meta opengraph et/ou twitter dans le <head> de la page, ce qui inclue l’image, car c’est Twitter qui se charge d’aller chercher l’URL que l’on twitte et de regarder si elle contient les informations nécessaires.

      Je crois qu’il y a aussi un processus de validation à faire chez Twitter aussi, qui doit valider le site car les cards ne sont pas activées pour le site de monsieur tout-le-monde (en gros les medias avec un peu de visibilité peuvent, mais les autres c’est tintin)

    • Michel Suquet

      Bonsoir Cerdic,

      la solution dans Mastodon correspond pratiquement à ce qu’a proposé Maïeul. J’ai modifié le fichier et l’ai copié dans /squelettes/modéles : je verrai ce que cela donne à la prochaine publication d’un article.

      Par contre, pour l’image, je ne vois pas ce qu’il faut faire dans le head, ni de quelle page il s’agit. Peux-tu préciser ? Je ne sais pas ce que sont les meta opengraph et/ou twitter dont tu parles.

      Et si je mets ceci ? J’ai un doute sur l’ajout de la syntaxe pour image-une…

      [(#TITRE|textebrut|concat{[(' ', #INTRODUCTION|textebrut)],' ', #GET{url},' ',#IMAGE-UNE}|replace{ ,''}|couper{#GET{len}})]
      

      Cordialement,

      Michel Suquet

    • Michel Suquet

      Oups, il y a eu de la perte en ligne.

      Voici ce que je voulais mettre :

      [(#TITRE|textebrut|concat{[(' ', #INTRODUCTION|textebrut)],' ', #GET{url},' ', #IMAGE-UNE}
      			|replace{&nbsp;,''}|couper{#GET{len}})]
    • Michel Suquet

      je ne sais pas pourquoi mais l’accolade fermante après #IMAGE-UNE ne passe pas…

    • Il faut utiliser la balise code et pas pre pour citer du code.

    • Comme le dit cerdic ... Pour une image de l’article il faut peut etre s’orienter vers les metas et notamment le plugin metas + ... Je teste aussi de mon côté

    • Michel Suquet

      Bonjour,

      je ne sais pas pourquoi mais j’ai été mis sur liste noire : comment en sortir ? Là, je vous envoie ce message depuis le collège où je travaille.

      Merci pour m’avoir indiqué le plugin metas+ : je suis en train de regarder de ce côté et je me demande s’il faut maintenir la modification du fichier modelesmicroblog_instituerarticle.html ?

      Cordialement,

      Michel Suquet

    • Michel Suquet

      Bonsoir,

      j’ai pu progresser avec l’aide de Jean-Christophe Villedieu qui développe le squelette Escal que nous utilisons pour notre site.

      Actuellement, le tweet émis, suite à la publication d’un article, donne bien un tweet-card, avec l’icône que j’avais ajouter dans le paramétrage de metas+. Je l’ai supprimée car elle est trop grande et je pense qu’il y aura pas défaut le favicon ; ce doit être ce qui est appelé le logo du site je suppose.

      Pour cela, j’ai installé le plugin metas+ comme vous l’avez conseillé, et je n’ai pas eu besoin de modifier le fichier modelesmicroblog_instituerarticle.html (il n’y a donc plus rien dans /squelettee/modèles contrairement à mes essais avant l’installation de metas+). Jean-Christophe a fait une modification concernant le plugin Escal pour corriger une erreur de squelette suite à l’installation de metas+.

      Cependant, j’aimerai que dans le tweet soit incorporée la 1re image de l’article, juste en dessous de l’introduction. Voyez-vous comment paramétrer le plugin tweeter pour obtenir cela ? À moins que cela se passe ailleurs, comme avec l’utilisation du plugin metas+ ?

      Cordialement,

      Michel Suquet

    • Michel Suquet

      oups, il s’agit de Jean-Christophe Villeneuve (et non Villedieu).

    • Michel Suquet

      Bonjour et bonne année,

      cette fois-ci, cela fonctionne : l’image dans l’article est bien prise en compte dans le tweet.

      J’ai l’impression que c’est suite à une mise à jour du plugins métas+ au sujet d’une boulette (voir la mise à jour 113419 de ce plugins).

      L’image n’est pas retaillée mais elle est transmise : c’est déjà un progrès.

      Par contre, je ne comprends pas la gestion de la taille de l’image dans la configuration du plugin metas+. On mentionne ceci : propriétés « og:image » et « twitter:image », format conseillé : 1,91:1 mais je ne comprends pas ce qu’il faut faire exactement. Pour l’instant, j’ai mis une image de 36pixels×36pixels.

      Cordialement,

      Michel Suquet

    • Michel Suquet

      Je pense avoir compris : en mettant une image d’environ 380×190, cela fonctionne bien.

      À+,

      Michel Suquet

    Répondre à ce message

  • Bonjour,

    J’ai un problème avec le caractère & qui une fois arrivé sur twitter est transformé en &amp;

    une idée du filtre à appliquer ? Je trouve vraiment pas.

    Répondre à ce message

  • Bonjour à tous,

    pour info, utilisant le plugin microblog sur un spip 2.x depuis longtemps et suite au passage en 3.x avec le plugin Twitter, j’avais un soucis sur les tweets envoyés tronqués dans la limite de 140 caractères.

    Le problème, de mon côté, venait de la table spip_articles. La colonne microblog était un varchar de 140, évidemment la nouvelle limitation de twitter à 280 caractères n’était pas en adéquation. Un petit coup de PHPMyAdmin pour passer cette colonne à 280 caractères et le problème est réglé.

    ++

    Répondre à ce message

  • 2

    Question sotte mais grenue :

    Comment interdire l’envoi de tweets auto pour les articles situés dans les rubriques réservées par Accès restreint ?

    Merci

    • Salut, tu peux le faire en personnalisant le modèle qui génère le contenu du twit dans squelettes/modeles/microblog_instituerarticle.html en y ajoutant les critères nécessaires à la boucle qui récupère l’article à twitter. Ainsi, si le squelette ne renvoie rien, il n’y aura pas de twit envoyé.

    • C’est en effet une bonne idée ! Merci !

    Répondre à ce message

  • gilles_tagada

    Bonjour,
    Si je ne me trompe pas, le calcul de la longueur du tweet est mauvais. En effet, les mots-clé (#...) et les urls ne comptent que pour 10 caractères quelle que soit leur longueur réelle.

    Répondre à ce message

  • gilles_tagada

    Bonjour,
    Ce que je souhaite faire, c’est interdire l’envoi automatique des notifications, mais pouvoir envoyer le statut si je le souhaite et après modification.
    Or, j’ai constaté que, lorsqu’on décoche la « notification publique » pour « articles publiés », l’invite de statut n’était pas affiché, même si la case correspondante était cochée.
    Est-ce un bug ?

    Répondre à ce message

  • 1
    gilles_tagada

    Par défaut, le titre des articles repris dans les tweets est limité à 120 caractères moins la longueur de l’url. Bien que la longueur max des tweets soit passée à 280 caractères, cela n’a pas changé.

    Pour modifier cette valeur il suffit d’aller dans le fichier modeles/microblog_instituerarticle.html

    Répondre à ce message

  • Juste un petit détail :

    Dans la mesure où le plugin permet directement de twitter sur le compte de la structure, ne serait-il pas logique de restreindre son accès à minima aux administrateurs restreint ?

    Dans son fonctionnement actuel, celui-ci permet à des rédacteurs, qui doivent soumettre leur articles à modération, de communiquer à la one again au nom de la structure. Pas logique ...

    Répondre à ce message

  • 4

    hop. j’ai plus aucun tweet depuis 10 jours, alors que j’en ai posté hier (et que la tâche de job_queue a été effectuée.

    • Bonjour, même problème pour moi, avez-vous trouvé une solution ?

    • oui, suite à une mise à jour interne, l’hébergeur avait supprimé le module cURL de PHP. Verifiez via la page <code/ecrire/ ?exec=infos que ce module n’est pas activé. Si telle est bien le cas, demandez à votre hébergeur de l’activer.

    • Merci Maïeul, le module curl était bien activé mais toujours pas de tweets affichés, une autre piste ?

    • désolé, non.

    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