WebsiteBaker Community Forum

WebsiteBaker Support (2.8.x) => Droplets & Snippets => Topic started by: Ruud on May 05, 2011, 11:51:25 PM

Title: twitter-feed-droplet
Post by: Ruud on May 05, 2011, 11:51:25 PM
Some time ago I needed to add a twitter feed to a website.
I did not want to use javascript for this because for SEO purposes it is good to have changing content in the page output.
So I made a Droplet for it.

Code: [Select]
<?php 
//use [[tweet?name=mytweetname&max=5]]

if (isset($_SESSION[&#39;tweets&#39;])) return $_SESSION[&#39;tweets&#39;]; //prevent too many calls
if (!isset($name)) return true;
if (!isset(
$max)) $max 5;

if (!
function_exists(&#39;fetch_tweets&#39;)) {
function fetch_tweets($username$maxtweets) {
$tweets simplexml_load_file("http://twitter.com/statuses/user_timeline/" $username ".rss");
$tweet_array = array();  
foreach ( $tweets->channel->item as $tweet ) { 
if ($maxtweets == 0) {
break;
} else {
$twit $tweet->description;
$twit substr(strstr($twit, &#39;: &#39;), 2, strlen($twit));
$twit preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>",$twit);
$twit preg_replace("(@([a-zA-Z0-9\_]+))""<a target=\"_blank\" href=\"http://www.twitter.com/\\1\">\\0</a>"$twit);
$twit preg_replace(&#39;/(^|\s)#(\w+)/&#39;, &#39;\1<a target=\"_blank\" href="http://search.twitter.com/search?q=%23\2">#\2</a>&#39;, $twit);
$twit iconv("UTF-8"DEFAULT_CHARSET$twit);
$pubdate strtotime($tweet->pubDate); 
$propertime date(DATE_FORMAT.&#39;, &#39;.TIME_FORMAT, $pubdate);  //Customize this to your liking
$tweet_item = array(&#39;desc&#39; => $twit,&#39;date&#39; => $propertime,);
array_push($tweet_array$tweet_item);
$maxtweets--;
}
}
return $tweet_array;
}
}
$mytweets fetch_tweets($name$max);
$rval = &#39;<div class="twitter-updates">&#39;;
foreach ($mytweets as $k => $v) {
     
$rval .= &#39;<div><p class="twitter-update">&#39; .$v[&#39;desc&#39;]. &#39;</p><p class="twitter-date">&#39; .$v[&#39;date&#39;]. &#39;</p></div>&#39;;
}
$rval .= &#39;</div>&#39;;
$_SESSION[&#39;tweets&#39;] = $rval;
return $rval;

The droplet is called like [[tweets?name=billgates&max=10]] (max is optional)

It is depending on the simplexml library. According to the PHP website this is included in the standard PHP-5 installations, so it might work on most hosts.

The tweets are loaded once per browser session. This is to prevent being banned by twitter for requesting data too much from a single IP address.

Have fun with it.

Ruud
Title: Re: twitter-feed-droplet
Post by: Bug on May 08, 2011, 12:44:00 PM
Sweet
Title: Re: twitter-feed-droplet
Post by: Argos on May 16, 2011, 03:50:31 PM
This seems to be the same functionality as http://www.websitebakers.com/pages/modules/listings/various/wb-tweets.php, but then as a droplet. Is that correct?
Title: Re: twitter-feed-droplet
Post by: Ruud on May 16, 2011, 04:05:13 PM
in the end: yes. It shows tweets.  8-)

It is very minimal, and because it is a droplet it is very easy to position and customize the output.