Twitter Pull, comment créer un bloc Drupal des derniers tweets

Rapide article pour vous montrer comment créer, via l'API de Drupal, un bloc qui récupère les derniers tweets.

Twitter Pull

Ce module va vous permettre de récupérer via l'API twitter les derniers tweets d'un compte ou d'une recherche, il est téléchargeable ici : Twitter Pull

Création du bloc

Dans votre module Drupal 7 (si vous n'en avez pas encore créé, veuillez d'abord lire ce tutorial de Yoran Brault), ajoutez un hook_block_info() :

1
2
3
4
5
6
7
8
9
10
11
<?php
/**
 * Implements hook_block_info().
 */
function monmodule_block_info() {
  $blocks['last_tweets'] = array(
    'info' => "Derniers tweets",
    'cache' => DRUPAL_NO_CACHE,
  );
  return $blocks;
}

Ici on désactive le cache pour pouvoir le gérer directement dans notre bloc. Puis on s'occupe du rendu de notre bloc via le hook_block_view() :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
/**
 * Implements hook_block_view().
 */
function monmodule_block_view($delta) {
  $block = array();
  switch ($delta) {
    case 'last_tweets':
      $block['subject'] = "Derniers tweets";
      // Vérification des données en cache de 1 heure maximum
      if ($cache = cache_get('monmodule_last_tweets') && REQUEST_TIME - $cache->created < 3600) {
        // Le cache est déjà présent, on l'affiche
        $block['content'] = $cache->data;
      }
      else {
        // Récupération des tweets
        $tweets = twitter_pull_retrieve('@momuser', 10);
        $items = array();
        foreach ($tweets as $tweet) {
          // Affichage des tweets avec les URL parsées en liens
          $class = strtolower($tweet->username);
          $items[] = '<span class="' . $class . '">' . _filter_url($tweet->text, NULL) . '</span>';
        }
        $block['content'] = theme('item_list', array('items' => $items));
        cache_set('monmodule_last_tweets', $block['content'], 'cache', REQUEST_TIME + 3600);
      }
  }
  return $block;
}

Il ne vous reste plus qu'à activer votre module et placer votre bloc dans une région pour que la magie opère !

Personnalisation

Il vous est possible de régler le nombre de tweets que vous souhaitez récupérer en changeant le deuxième argument de twitter_pull_retrieve() (maximum 200 tweets). Il n'est cependant possible de récupérer qu'une seule série de tweets à la fois, pour en récupérer depuis plusieurs utilisateurs il vous faudra faire plusieurs requêtes et les trier sur $tweet->timestamp via uasort.

Vous pouvez par exemple créer un fil déroulant tel que sur www.macifcourseaularge.com à l'aide d'un plugin jQuery liScroll.

Alternative

Vous pouvez également utiliser le widget Twitter (que vous pouvez voir dans la sidebar de mon blog) mais il est moins personnalisable, et ralentira le temps de chargement de votre page côté client.