Reply to comment
Drupal really likes Twitter
When I was creating new website, I indeed wanted to keep all useful functions I had on my old site. One of them was list of latest comments from Twitter.
Have you ever noticed that almost all computer related problems have at least two solutions, “the clean and nice” one and “the dirty” one. In this case, the clean solution is to use Drupal module called Twitter, and the dirty one is creating new block that includes raw PHP code. After long and painful consideration, I decided to choose the dirty one. Let me show you how I solved the problem.
First, you need to enable Aggregator module, which will periodically download RSS feed with your comments from Twitter. You can do that at /admin/build/modules page, Core - optional category. And when you're there, enable also PHP filter module, you'll need it later. After that, go to /admin/content/aggregator/add/feed page and add your RSS feed there. You can find out URL of your feed by looking at source code of your Twitter profile page.
Second (and also last) step is to create the block itself and you can do that at /admin/build/block/add page. Into “Block body” field, enter this code:
<?php $fid = 1; $limit = 5; $result = db_query('SELECT description, timestamp FROM {aggregator_item} WHERE fid = '. $fid .' ORDER BY timestamp DESC LIMIT '. $limit); print '<div class="item-list"><ul>'; while ($row = db_fetch_object($result)) { $text = $row->description; $nick = explode(":", $text); $nick = $nick[0]; $nicklen = strlen($nick) + 2; $text = substr($text, $nicklen); $text = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $text); $text = preg_replace('@\@([\w]+)@', '<a href="http://twitter.com/$1">$1</a>', $text); print '<li><div class="my-twitter-status">'; if (($text[0] != '<') && ($text[0] == strtolower($text[0]))) { print $nick . ' '; } print $text . '</div>'; print '<div class="my-twitter-status-time">' . twitter_ago($row->timestamp) . '</div></li>'; } print '</ul></div>'; function twitter_ago ($timestamp) { $difference = time() - $timestamp; $text = format_interval($difference, 2) . " ago"; return $text; } ?>
Yeah, it's really ugly code, I know. But it's surely better than the version I wanted to publish few minutes ago. If IKEA was making software, it'd look exactly like that version - you'd have to finish it by yourself.
If you want to adjust the number of comments, feel free to change value of $limit variable. You probably won't have to change value of $fid variable if your Twitter RSS feed is first feed you added to Aggregator module.
Don't forget to change block input format to “PHP code”, otherwise it won't work at all. And that's it, everything should work when you save your block. Should.
Recent comments
7 weeks 5 days ago
11 weeks 1 day ago
16 weeks 4 days ago
27 weeks 3 days ago
30 weeks 2 days ago