08May 2012 0 Comments */?>

Métodos para mostrar tus últimos tweets

Categorías: Tips de PHP, Tutoriales - Tags: ,

Existen varios métodos para mostrar los últimos tweets en tu sitio y dependiendo de lo que necesites te puede servir uno más que otro. Hoy les voy a explicar como hacerlo mediante PHP y mendiante javascript.

Con Javascript

Un método simple y que no requiere muchos conocimientos pero que tampoco ofrece mucha flexibilidad a la hora de dar estilo a estos últimos tweets es mediante javascript que twitter mismo proporciona.
Para ello tan solo tiene que copiar el siguiente código donde quieran que se muestren los últimos tweets.

Importante modificar chifliiiii por tu propio usuario y 2 por la cantidad de tweets que quieren mostrar.

<ul id="twitter_update_list">
</ul>
<script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script>
<script type="text/javascript" src="http://twitter.com/statuses/user_timeline/chifliiiii.json?callback=twitterCallback2&count=2" ?></script>

Para modificar como devuelve el HTML podemos decargar blogger.js y modificarlo a nuestro gusto , por ejemplo para traducirlo al español.

Con PHP

Para mostrar los últimos tweets mediante PHP podemos usar la siguiente función que encontre en este sitio.

<?php
	// Tu nombre de usuario de twitter
	$twitterid = "chifliiiii";
 
	// Cantidad de tweets a mostrar
	$numberoftweets = "5";
 
	// Quieres que los links funcionen dentro del tweet?
	$tags = true;
 
	// Quieres convertir los links en nofollow ? (Mejor para seo) (true |false)
	$nofollow = true;
 
	// Quieres que los links se abran en una ventana nueva?(true |false)
	$target = true;
 
	// Queres mostrar el widget de twitter para que te sigan? (true |false)
	$widget = true;
 
	// A partir de aquí empiezan las funciones y no hay que editar más salvo que quieras cambiar el idioma
	function changeLink($string, $tags=false, $nofollow, $target){
	  if(!$tags){
	   $string = strip_tags($string);
	  } else {
	   if($target){
		$string = str_replace("<a", "<a target=\"_blank\"", $string);
	   }
	   if($nofollow){
		$string = str_replace("<a", "<a rel=\"nofollow\"", $string);
	   }
	  }
	  return $string;
	 }
 
	 function getLatestTweet($xml, $tags=false, $nofollow=true, $target=true,$widget=false){
		global $twitterid;
	  $xmlDoc = new DOMDocument();
	  $xmlDoc->load($xml);
 
	  $x = $xmlDoc->getElementsByTagName("entry"); 
 
	  $tweets = array();
	  foreach($x as $item){
	   $tweet = array();
 
	   if($item->childNodes->length)
	   {
		foreach($item->childNodes as $i){
		 $tweet[$i->nodeName] = $i->nodeValue;
		}
	   }
		$tweets[] = $tweet;
	  }
 
	// Here's the opening DIV and List Tags.
	   echo "<div id=\"latesttweet\"><ul>\n";
 
	  foreach($tweets as $tweettag){
	   $tweetdate = $tweettag["published"];
	   $tweet = $tweettag["content"];
	   $timedate = explode("T",$tweetdate);
	   $date = $timedate[0];
	   $time = substr($timedate[1],0, -1);
	   $tweettime = (strtotime($date." ".$time))+(3600*3); // El valor de la diferencia de tiempo - ARG + 3 hours (3600 seconds x 3)
	   $nowtime = time();
	   $timeago = ($nowtime-$tweettime);
	   $thehours = floor($timeago/3600);
	   $theminutes = floor($timeago/60);
	   $thedays = floor($timeago/86400);
	   if($theminutes < 60){
		if($theminutes < 1){
		 $timemessage =  "Less than 1 minute ago";
		} else if($theminutes == 1) {
		 $timemessage = $theminutes." minute ago.";
		 } else {
		 $timemessage = $theminutes." minutes ago.";
		 }
		} else if($theminutes > 60 && $thedays < 1){
		 if($thehours == 1){
		 $timemessage = $thehours." hour ago.";
		 } else {
		 $timemessage = $thehours." hours ago.";
		 }
		} else {
		 if($thedays == 1){
		 $timemessage = $thedays." day ago.";
		 } else {
		 $timemessage = $thedays." days ago.";
		 }
		}
 
		echo "<li>".changeLink($tweet, $tags, $nofollow, $target)."<br />\n";
 
		echo "<span>".$timemessage."</span></li>\n";
	   }
 
		echo "</ul></div>";
 
 
		if($widget){
			echo "<a href=\"https://twitter.com/" .$twitterid. "\" class=\"twitter-follow-button\" data-show-count=\"true\">Follow @" .$twitterid. "</a>
		<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=\"//platform.twitter.com/widgets.js\";fjs.parentNode.insertBefore(js,fjs);}}(document,\"script\",\"twitter-wjs\");</script>";
		}
 
	 }
?>

He cambiado los comentarios a español para que sea más facil de entender. Otra cosa a tener en cuenta es la siguiente linea:

$tweettime = (strtotime($date." ".$time))+(3600*3); // El valor de la diferencia de tiempo - ARG + 3 hours (3600 seconds x 3)

Cambienla si muestra incorrectamente el tiempo.

Y por último para que funcione todo hacer:

<?php
$tweetxml = "http://search.twitter.com/search.atom?q=from:" . $twitterid . "&rpp=" . $numberoftweets . "";
 
getLatestTweet($tweetxml, $tags, $nofollow, $target, $widget);
?>

Espero que les sea de utilidad. Saludos!!!

Damián Logghe

Programador freelancer y emprendedor en sueños. Contento de ser mi jefe y poder hacer lo que me gusta. WordPress es mi principal fuente de ingreso y me escribo tanto para ayudar como para tener una guia de memoria. Quieres contratarme? Déjame un mensaje.

More Posts - Website

Follow Me:
TwitterFacebookLinkedInGoogle Plus