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

  • 6

    Bonjour,

    Depuis la 3.0.13 les tweets des articles pré-publiés ne partent plus du tout, seuls le articles publiés en direct partent...

    je nage...

    • Bonjour,

      Pour info la publication des tweets ne fonctionne pas quant un article est post-daté pour une publication dans le futur. J’ai lu ci-dessus qu’un CRON vérifie toutes les heures. Mais le créneau d’une heure largement dépassé... aucun tweet à l’horizon :-(

      Par contre le plugin fonctionne correctement pour les articles publiés directement.

      Svp, dans quel fichier du plugin se trouve l’appel au CRON ?

      Merci

    • Julien, Al : yep je viens d’avoir le cas aussi .

      Corrigé sur la version 1.1.3 du plugin normalement

    • Bonjour,

      une idée de sa date de sortie ?

    • D ici 24 heures maxi

    • ah ;-)

      trop cool, merci !

    • Après test, ça marche parfaitement !
      Bravo !

    Répondre à ce message

  • 3

    Bonjour,

    Comment peut on modifier l’envoi des informations à Twitter
    ( ajouter par exemple le #soustitre ou le #surtitre d’un article à l’envoi automatique) ?

    j’ai l’impression que le plugin ne gère pas de façon optimale la pré-publication, une raison ou idée ?

    • Ça veut dire quoi « ne gère pas de façon optimale la pré-publication » ? Quand un article est post-daté pour une publication dans le futur, la publication du tweet est gérée par un CRON qui vérifie toutes les heures. Le tweet n’est donc pas immédiat après la publication, mais dans un créneau d’une heure.

      Pour utiliser le soustitre ou le surtitre, tu peux personnaliser à ta guise le squelette modeles/microblog_instituerarticle.html qui est utilisé pour générer le tweet par défaut.

    • merci pour le sous titre et/ou le sur titre, mais pour les articles pré-publiés une fois la date changée, le plugin me dit publication dans une minute, et publie sur twitter

      un truc que je n’ai peut être pas compris ?

    • Pour info, ma modification pour l’introduction du sou-stitre

      <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{80}|moins{#GET{url}|strlen}
      		})]
      		[(#TITRE|textebrut|couper{#GET{len}}|concat{', ',#SOUSTITRE|textebrut|couper{40}}
      			|concat{' ',#GET{url}}
      			|replace{&nbsp;,' '})]
      	]
      </BOUCLE_art>

    Répondre à ce message

  • Ayant un pb d’affichage des tweets j’ai voulu utiliser la page twitter-backend.
    Quand j’y accéde directement par le navigateur je vois mes tweets.
    Donc j’ai créé un site référencés mais il ne récupére rien... des idées ?

    Répondre à ce message

  • 1

    Hello…

    J’ai eu le cas où l’élément .twtr-doc se voit assigné la valeur 250 si la largeur est définie à « auto ».
    Visiblement, le JS assigne 100% dans ce cas, sauf que la logique du squelette inclure/twidget_search retourne auto|intval (donc 0).

    Ceci fonctionne pour ’auto’ (il faudrait mieux faire la comparaison pour inclure « 100% » aussi)  :

    #SET{width, #ENV{width,#CONFIG{twidget/width,250}}}
    #SET{height, #ENV{height,#CONFIG{twidget/height,300}}}
    width: '[(#GET{width}|=={auto}|?{#GET{width}, #GET{width}|intval})]',
    height: '[(#GET{height}|=={auto}|?{#GET{height}, #GET{height}|intval})]',

    Sinon, merci BEAUCOUP pour ce plugin. :)

    Répondre à ce message

  • 2

    Bonsoir Cedric
    J’essaie ce plugin en local et j’obtiens ce message d’erreur

    Strict Standards : Only variables should be passed by reference in C :\Program Files (x86)\EasyPHP-12.1\www\femmes solidaires\plugins\twitter-v1\inc\twitter.php on line 154

    avez vous une idée concernant ce problème ?
    Merci !
    Josiane

    • Bonjour,
      la version 1.1.2 du plugin doit corriger ce problème !

    • Bonjour Cedric,

      on dirait que le nouveau plugin ne supporte toujours pas la pré-publication, y aurait une solution pour régler ce problème ?

      et au passage pour les #soutitre/#surtitre une solution ?

    Répondre à ce message

  • Colombari

    Ça marche chez moi, mais dans le widget affiché sur la partie publique de mon site, j’ai des petits verrous jaunes partout (à côté des liens et des logos). Je ne comprends pas à quoi ils servent, et comment les enlever ?

    C’est d’aurant plus bizarre que dans la prévisualisation du widget dans l’admin, je ne vois pas ces verrous...

    Répondre à ce message

  • 1

    Si on a configuré plusieurs comptes, comment écrire sa boucle DATA pour obtenir les tweets visibles depuis un des comptes uniquement ?

    • Pour pouvoir choisir quel compte j’utilise, j’ai fait cette balise. je suppose qu’il y a plus propre, non ?

      function balise_TWITTER_DEFAULT($p) {
              $default = interprete_argument_balise(1,$p);
              $default = str_replace("'", '', $default);
              $cfg = @unserialize($GLOBALS['meta']['microblog']);
              $cfg['default_account'] = $default; 
              $default_account = $cfg['twitter_accounts'][$cfg['default_account']];
              unset($cfg['twitter_accounts']);
              $cfg['twitter_accounts'][$cfg['default_account']] = $default_account;
              $GLOBALS['meta']['microblog'] = @serialize($cfg);
       
              $p->code = '';
              return $p;
      }

    Répondre à ce message

  • 1

    Bonjour,

    Il y a quelque chose que je comprends.
    Il est indiqué :

    « Utiliser des urls courtes (nécessite un .htaccess) »

    C’est quoi ce .htaccess ? Comment l’intégrer ?
    Je n’arrive pas à twitter des urls courtes. Comment procède-t-on.

    Guillaume

    • quand tu as installé spip, tu as un fichier dans ton serveur qui s’appelle htacces.txt, ça suffit de le renommer en .htacces, n’oublies pas le point au début du fichier, et le tout est joué...

    Répondre à ce message

  • 2
    Jean-eric

    Bonjour,

    J’utilisais Microblog jusqu’à present pour publier des annonce de mes articles de mon site http://yellowinthesky.freeiz.com. Or depuis le 12mai je ne sais pas ce qu’il se passe je n’ai plus de relais sur mon compte twitter #trispot101010.

    Ensuite je ne pouvais plus acceder a la configuraton (cfg) de micorblog (access denied !)

    J’ai donc installer Twitter
    J’utilise le squellette Sark-Spip qui est a jour. et SPIP 3.0.10 [20600].
    J’ai des pbs dans la partie privee

    Warning : array_keys() [function.array-keys] : The first argument should be an array in /home/a4189871/public_html/plugins/auto/twitter/v1.0.2/inc/twitter.php on line 152

    D’autre part comment configurer le .htaccess ? Avec microblog il fallait faire
    # ping http://site/1234 => article1234
    RewriteRule ^([1-9][0-9]*)$ spip.php ?action=redirect&type=article&id=$1 [QSA,L]

    Qu’en est-il avec Twitter ?

    • Nico D.

      Même erreur ici (quand je force le display_errors sur on, sinon c’est invisible)

      Warning : array_keys() expects parameter 1 to be array, null given in /var/www/.../plugins/auto/twitter/v1.0.3/inc/twitter.php on line 152

      Warning : reset() expects parameter 1 to be array, null given in /var/www/.../plugins/auto/twitter/v1.0.3/inc/twitter.php on line 152

      Et aucun lien de config dans les menus (ou bien pas trouvé ?)

    • Nico D.

      PS : plugin Twitter 1.0.3 SVN [73676] sur SPIP 3.0.10 [20600]

    Répondre à ce message

  • Bonjour Cedric,

    J’ai remarqué quelques bizarreries en utilisant le widget profile :
    certains liens se font (goo.gl/6jSWb) d’autres non (gk5Zb0Zjlx) alors qu’en ligne ils sont bons tous les deux
    Regardez les deux copies d’écran jointes.

    GF

    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