15.- Cómo montar un resumen de prensa en tu web

Desde la llegada del RSS, ofrecer un servicio de titulares de prensa en tu página se ha convertido en cosa de niños. Ya no hace falta suscribirse a esos servicios que te dan un código que pones en tu página y te incluyen publidad a cambio de darte los titulares.

Lo único que hace falta es que las páginas en cuestión ofrezcan sindicación vía XML, feeds.

– mas –

Hacía ya tiempo que me venía rondando en la cabeza, pero no había conseguido dar con el quid de la cuestión, conseguía montar auténticos portales agregadores o sindicar un sólo feed, pero lo que yo quería era un pequeño espacio en portada con los títulares de varias páginas.

En éstas, di con el blogClip de blogpocket, que francamente está muy bien. Lo probé y funcionaba a la perfección. Para los que no lo sabéis, bloglines, te permite crear tu propio blog citando los artículos de otros. Con el Blogclip puedes sindicarte este blog de bloglines y ofrecerlo en tu web. En principio es la solución ideal, pues te permite ofrecer una especie de “resumen de prensa” de los artículos que hayas leído, comentados y personalizados por tí en tu página de bloglines. Pero para mí tiene un inconveniente: hay que actualizar el blog de Bloglines. Hay que acordarse de redactar los textos para acompañar a los enlaces que recomiendas, así que es más “personalizado”, pero da más trabajo.

Yo necesitaba algo que se actualizara sólo, porque hay largas temporadadas que no tengo tiempo ni para respirar, así que tener que mantener un blog adicional para mi sindicación de noticias no me resultaba viable. Así que seguí buscando hasta que di con LastRSS. LastRSS es una clase en php para sindicar archivos RSS (0.9, 1.0 and 2.0). los que sabéis inglés y/o programación, ya lo tenéis solucionado porque está todo ahí explicado, con ejemplos y todo.

Para los que no, vamos a explicar:

a) Cómo utilizar LastRSS para montarte unos titulares de 1 sólo feed, en nuestro caso, utilizaremos el de 20 minutos, periódico online que utiliza una licencia “by”.

b) Cómo utilizar LastRSS para montarte unos titulares procedentes de varios feeds, vamos a utilizar los feeds de DevShed, Sitepoint, maestros del web, programación.com

c) Como utilizar LastRSS para montarte unos titulares procedentes de varios feeds guardados en una base de datos y que aparezcan de forma aleatoria (que es lo que utilizamos en tomatoma.

El paso imprescindible para cualquiera de estas actividades, claro, es descargar el LAST RSS.

a) Sindicando 1 sólo feed

Esta es fácil, sólo tenemos que seguir el ejemplo que nos proporcionan en la propia página de LASTRSS.


<?php
/*
======================================================================
lastRSS usage DEMO 2
----------------------------------------------------------------------
Este ejemplo muestra como
-  crear un objeto lastRSS
- establecer una caché transparente transparent cache
- Establecer la URL del  RSS
- Acceder y mostrar los resultados
======================================================================
*/

// include lastRSS
include "lastRSS.php";

// Create lastRSS object
$rss = new lastRSS;

// Establecer el directorio para la caché y el tiempo (1200 segundos)
// (no te olvides de darle permisos de escritura al directorio caché)
$rss->cache_dir = '/temp';
$rss->cache_time = 1200;

// Try to load and parse RSS file
if ($rs = $rss->get('http://www.20minutos.es/rss/')) {
// Show website logo (if presented)
if ($rs[image_url] != '') {
echo "<a href=\"$rs[image_link]\"><img src=\"$rs[image_url]\" alt=\"$rs[image_title]\" vspace=\"1\" border=\"0\" /></a><br />\n";
}
// Show clickable website title
echo "<h1><a href=\"$rs[link]\">$rs[title]</a></h1>\n";
// Show website description
echo "$rs[description]<br />\n";
// Show last published articles (title, link, description)
echo "<ul>\n";
foreach($rs['items'] as $item) {
echo "\t<li><a href=\"$item[link]\">".$item['title']."</a><br />".$item['description']."</li>\n";
}
echo "</ul>\n";
}
else {
echo "Error: el archivo rss no está disponible...\n";
}
?>

Para implementarlo

1.- Create un directorio, en mi caso “clip”.
2.- Dentro de Clip crea un directorio “temp”.
3.- Dale permisos 777 al directorio “temp”.
4.- Sube Last LastRSS al directorio Clip
4.- Copia y pega el código anterior en un archivo 20min.php y súbelo al directorio Clip.

Puedes ver un ejemplo aqui: http://www.tomatoma.ws/php/clip/20min.php

b) Sindicando varios feeds

Este caso también es sencillo, nos serviría para montarnos una página de noticias, por ejemplo. También es suficiente con seguir el ejemplo que nos proporcionan en la propia página.

Aquí el código


<!-- Heading -->
<h1>Simple RSS agregator</h1>
<a href="http://www.webdot.cz/lastrss/">
LastRSS</a><hr>
<!-- / Heading -->

<?php
/*
======================================================================
lastRSS usage DEMO 3 - Simple RSS agregator
----------------------------------------------------------------------
Este ejemplo muestra como
-  crear un objeto lastRSS
- establecer una caché transparente transparent cache
- Mostrar varios feeds a la vez
======================================================================
*/

function ShowOneRSS($url) {
global $rss;
if ($rs = $rss->get($url)) {
echo "<h2><a href=\"$rs[link]\">$rs[title]</a></h2>\n";
echo "$rs[description]<br />\n";

echo "<ul>\n";
foreach ($rs['items'] as $item) {
echo "\t<li><a href=\"$item[link]\" title=\"$item[description]\">$item[title]</a></li>\n";
}
if ($rs['items_count'] <= 0) { echo "<li>Sorry, no items found in the RSS file :-(</li>"; }
echo "</ul>\n";
}
else {
echo "Sorry: It's not possible to reach RSS file $url\n<br />";
// you will probably hide this message in a live version
}
}

// ===============================================================================

// include lastRSS
include "lastRSS.php";

// List of RSS URLs
$rss_left = array(
'http://www.sitepoint.com/rss.php',
'http://www.devarticles.com/index2.php?option=mos_rss&no_html=1'
);
$rss_right = array(
'http://www.maestrosdelweb.com/index.xml',
'http://programacion.com/titulares.xml'
);

// Create lastRSS object
$rss = new lastRSS;

// Set cache dir and cache time limit (5 seconds)
// (don't forget to chmod cahce dir to 777 to allow writing)
$rss->cache_dir = 'temp';
$rss->cache_time = 1200;

// Show all rss files
echo "<table cellpadding=\"10\" border=\"0\"><tr><td width=\"50%\" valign=\"top\">";
foreach ($rss_left as $url) {
ShowOneRSS($url);
}
echo "</td><td width=\"50%\" valign=\"top\">";
foreach ($rss_right as $url) {
ShowOneRSS($url);
}
echo "</td></tr></table>";
?>

Y aquí el resultado: http://www.tomatoma.ws/php/clip/varios.php

c) Como utilizar LastRSS para montarte unos titulares procedentes de varios feeds guardados en una base de datos y que aparezcan de forma aleatoria.

Aquí ya tenemos que trabajar algo más, de lo que se trata, es de poder mostrar los titulares de varios sitios a la vez. Cómo tenemos muchos feeds y poco sitio, lo que vamos a hacer es guardarlos en una Base de datos y extraer aleatoriamente, un número que nosotros determinamos (en el ejemplo, 5) y mostrarlos en nuestra página. Así podemos mostrar muchos titulares, ocupando poco espacio.

En este caso tenemos que hacer varias cosas:

1) Modificar lastRSS.php para que sólo nos muestre 1 post de cada feed. Abrimos el archivo y cambiamos:

var $items_limit = 0;

por

var $items_limit = 1;

2) Creamos nuestra Base de datos:

DROP TABLE IF EXISTS `Rss_agrega`;
CREATE TABLE `Rss_agrega` (
`id_feed` int(11) NOT NULL auto_increment,
`nombre` varchar(150) NOT NULL default '',
`feed` varchar(150) NOT NULL default '',
PRIMARY KEY  (`id_feed`),
UNIQUE KEY `feed` (`feed`)
) TYPE=MyISAM AUTO_INCREMENT=13 ;

Yo no soy una experta en Bases de datos, así que supongo que es muy mejorable pero me funciona Smile

Si necesitáis llenarla rápidamente, aquí van unos datos para rellenarla:

INSERT INTO `Rss_agrega` VALUES (1, 'El navegante', 'http://abraldes.net/feeds/naveganteblog.xml');
INSERT INTO `Rss_agrega` VALUES (2, 'No tengo palabras', 'http://www.elcuaderno.info/wp-rss2.php');
INSERT INTO `Rss_agrega` VALUES (3, 'University of Mimesota', 'http://www.d.umn.edu/itss/support/Training/Online/webdesign/webdesign.xml');
INSERT INTO `Rss_agrega` VALUES (4, 'ceck', 'http://cek.bitacoras.com/wp-rss2.php');
INSERT INTO `Rss_agrega` VALUES (5, 'David Bravo', 'http://www.filmica.com/david_bravo/index.xml');
INSERT INTO `Rss_agrega` VALUES (6, 'tomatoma', 'http://www.tomatoma.ws/bicubic/b2/wp-rss2.php');
INSERT INTO `Rss_agrega` VALUES (7, 'Alistapart', 'http://www.alistapart.com/rss.xml');
INSERT INTO `Rss_agrega` VALUES (8, 'Alzado', 'http://www.alzado.org/xml/alzado.xml');
INSERT INTO `Rss_agrega` VALUES (9, 'Blogpocket', 'http://www.blogpocket.com/index.xml');
INSERT INTO `Rss_agrega` VALUES (10, 'Artilugios', '    http://www.lacoctelera.com/artilugios/feed/rss2/');
INSERT INTO `Rss_agrega` VALUES (11, 'foros de batiburrillo.net', 'http://batiburrillo.net/foros/rss.php');
INSERT INTO `Rss_agrega` VALUES (12, 'ppbb-es', 'http://www.phpbb-es.com/foro/news_rss.php');

<b>NOTA:</b> El nombre del feed, lo ponemos para enterarnos nosotros, el script muestra el nombre que tenga puesto el propio feed

3) Nos creamos nuestro Script


<ul><?php

function ShowOneRSS($url) {
global $rss;
if ($rs = $rss->get($url)) {
echo "\n";
foreach ($rs['items'] as $item) {
echo '<li><a href="'.$item['link'].'" title="'.$rs['title'].'">'.$item['title'].'</a></li>';
}
if ($rs['items_count'] <= 0) { echo "<li>Sorry, no items found in the RSS file :-(</li>"; }
echo "\n";
}
}

// ===============================================================================

// include lastRSS
include "lastRSS.php";

// Obtener lista de RSS de la BD

$dbcnx = @mysql_connect("localhost", "USUARIO", "CONTRASEÑA");

if (!$dbcnx) {
echo( "<p>Imposible conectar con la Base de datos</p>" );
exit();

}

// Seleccionar la Base de datos de Feeds

if (! @mysql_select_db("BASE_DE_DATOS") ) {
echo( "\n<p>No he podido localizar la base da datos " .
"en este momento</p>" );
exit();
}

$sql = "SELECT feed
FROM Rss_agrega
ORDER BY RAND( )
LIMIT 5 ";

$result = @mysql_query($sql);
if (!$result) {
echo ("Error en la query");
exit();
}

while ($row = @mysql_fetch_array($result))
{  $rss_left[]= $row['feed']; }

// Create lastRSS object
$rss = new lastRSS;

// Show all rss files
foreach ($rss_left as $url) ShowOneRSS($url);
mysql_close();
?>
</ul>

El resultado lo podéis ver aquí: http://www.tomatoma.ws/php/clip/sindicar.php y en
nuestra página principal

PD: no puedo por menos que darle las gracias a Cluster de foros del Web, por echarme una mano con este script.

Volver an índice

One response to “15.- Cómo montar un resumen de prensa en tu web

  1. Gracias por el tutorial!!

    El otro día encontré una página para hacer páginas webs de prensa de manera rápida. Funciona genial. Sin embargo, eché algunas opciones en falta como, por ejemplo, un diseño principal menos complejo.

    Aquí os dejo el enlace del paso a paso que seguí: http://www.uncomo.com/articulo/como-crear-una-pagina-web-de-prensa-facilmente-4811.html

    Saludos!

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s