my github
english | español
Waldo Urribarri HOME PROJECTS ABOUT ME


Feed RSS Para Tus Necesidades

rss logo

Debes haberte dado cuenta que la mayoría de las veces me gusta hacer las cosas por mi cuenta, sin utilizar ninguna herramienta hecha como WordPress, Blogger, Tumblr, etc. No es que tenga algo en contra. Sólo me gusta saber como hacerlas, y la mejor forma es haciéndolas yo mismo.

Hoy les mostraré como hice el RSS feed de esta página. Nunca había hecho uno antes, y es sorprendentemente fácil de hacer. No voy a darte una explicación de que es RSS, porque probablemente Wikipedia puede hacerlo mejor, así que sólo digamos que para mi, es un formato XML estandarizado que hará que tu "feed" pueda ser leido por agregadores de contenidos.

Utilizaré PHP para construir el XML, y MySQL para obtener el contenido. Sólo para que sepas, crearemos un XML similar a este:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" >
<channel>
<title>waldou.com RSS feed</title>
<link>http://www.waldou.com</link>
<description>waldou.com[Personal blog and sandbox of Waldo Urribarri]</description>
<language>en-us</language>
<copyright>Copyright (C) 2012-2013 waldou.com</copyright>
<item>
<title>Your post title</title>
<description>Your post content</description>
<link>Your post URL</link>
<pubDate>Your post publication date</pubDate>
</item>
</channel>
</rss>

El PHP completo para el "feed" es:

header("Content-Type: application/rss+xml; charset=UTF-8");

include 'dbconnection.php';

if(isset($_GET['lan'])) {
// Do something with the language
} else { // Use defaults }

if(isset($_GET['t'])) {
// build $query variable
} else {
// build $query variable
}

$myfeed = '<?xml version="1.0" encoding="UTF-8"?>';
$myfeed .= '<rss version="2.0">';
$myfeed .= '<channel>';
$myfeed .= '<title>waldou.com RSS feed'.$extratitle.'</title>';
$myfeed .= '<link>http://www.waldou.com</link>';
$myfeed .= '<description>waldou.com[Personal blog and sandbox of Waldo Urribarri]</description>';
$myfeed .= '<language>en-us</language>';
$myfeed .= '<copyright>Copyright (C) 2012-2013 waldou.com</copyright>';

$result = mysql_query($query, $conn) or die(mysql_error());

while($row = mysql_fetch_array($result)) {
extract($row);
$myfeed .= '<item>';
$myfeed .= '<title>'.$post_title.'</title>';
$myfeed .= '<description>'.$post_info.'</description>';
$myfeed .= '<link>http://www.waldou.com/news.php?id='.$post_id.'</link>';
$myfeed .= '<pubDate>'.$post_date.'</pubDate>';
$myfeed .= '</item>';
}
$myfeed .= '</channel>';
$myfeed .= '</rss>';
echo $myfeed;

Sólo necesitas un poco de código como puedes ver. Lo primero que hacemos es establecer el tipo de contenido a application/rss+xml y establecer el set de caracteres. Luego yo incluyo mis líneas de conexión, hago algo con los datos obtenidos via GET desde la URL y establezco mi $query que obtendrá los posts de la base de datos. Nada muy difícil.

Luego empiezo a construir mi XML concatenando los primeros tags a la variable $myfeed va. Por supuesto, debes cambiar esta información acorde a tu página. Luego del tag COPYRIGHT viene la parte más importante. Para cada resultado empiezo a construir un nuevo ITEM, estableciendo el TITLE, DESCRIPTION, LINK y PUBDATE. Luego que todos los posts son obtenidos de la base de datos, cerramos los tags CHANNEL y RSS y mostramos el XML resultante.

Una cosa a considerar es que el tag DESCRIPTION sólo puede contener texto (esto no es completamente verdad pero hay muchos tags html que no funcionarán). Si necesitas escribir html como yo, usa en su lugar:

<content:encoded><![CDATA[Your html content here]]></content:encoded>

Eso es todo básicamente. Sube el archivo .php y pruébalo tu mismo. Para probarlo, puedes subscribirte a el usando Google Reader o Feedburner.

Algunos exploradores pueden detectar si un sitio web tiene un feed RSS, y eso es debido a un elemento link en la página. Para esto puedes agregar esto a la página que estará relacionada a tu "feed":

<link rel="alternate" href="/rssfeed" title="RSS feed" type="application/rss+xml" />

Esto es asumiendo que tu "feed" está localizado bajo directorio_raíz/rssfeed, en un index.php.

¿Ahora qué? Bueno, ahora que tienes un feed RSS podrías hacer una aplicación lujosa para iPhone/Android/Desktop para obtener el contenido y mostrarlo como quieras. Sólo una idea.


www.000webhost.com