Saltear al contenido principal

Crear Canal de noticias RSS

En esta ocasión vamos a crear un canal RSS con PHP y XML. Hace tiempo buscaba como crear dicho canal y me encontré con multitud de sitios que te enseñaban ha hacerlo pero casi todas tenían problemas a la hora de aplicarlo. Entre todas me puse manos a la obra y por fin funciono.

Posteriormente empezó a fallar, es decir, a mostrar caracteres extraños, o bien, no mostraba nada y, por ello, me puse a buscar que pasaba y me encontré con una función que eliminaba los caracteres extraños y los sustituye por caracteres legibles.

Datos para crear la base de datos:

CREATE TABLE IF NOT EXISTS `noticias` (
'id_noticia' int(11) NOT NULL AUTO_INCREMENT,
'categoria' varchar(100) NOT NULL,
'titulo' varchar(100) NOT NULL,
'descripcion' varchar(200) DEFAULT NULL,
'enlace' varchar(120) NOT NULL DEFAULT '',
'fecha' varchar(15) NOT NULL,
PRIMARY KEY (`id_noticia`)
);

Aquí tenemos el archivo completo rss.php

//Indicamos a php que lo que estamos por crear es un archivo XML
header('Content-type: text/xml; charset="UTF-8"');
//y como todo archivo XML debemos definirlo de esta manera:
echo '< ?xml version="1.0" encoding="UTF-8"?>';
//Aquí la conexión o archivo de conexión a nuestra base de datos
include ("carpeta/conexion-a-los-datos-de-la-base-de-datos.php");
$link=Conectarse();

// Generamos nuestro documento
echo '';
//Hacemos la consulta y la ordenamos por id para mostrar siempre la última noticia
$resultado=mysql_query("select * from noticias order by id_noticia Desc",$link);

echo '

tu titulo
www.tudominio.com
es-ES
Copyright
descriptivo corto de tu sitio web
tucorreo@tucorreo.com (nombre editor)
tucorreo@correo.com (nombre webmaster)

ruta-de-tu-logo.jpg
titulo de la imagen
www.tudominio.com
';
//Creamos un while para poder generar todos los extractos de noticias de nuestro sitio
while($row = mysql_fetch_array($resultado)){
// añadimos una función para eliminar caracteres extraños a pie de página la función
// limpiamos caracteres extraños y "Cortaremos" el artículo en 200 caracteres para nuestro descriptivo
$description=clrAll(substr($row[noticia],0,200)."[...]");

echo '
< ![CDATA['.$row[titulo].']]>
http://tudominio/rss.php?id='.$row[id_noticia].'
< ![CDATA['.$row[categoria].']]>
< ![CDATA['.$row[noticia].''.$description.']]>
nombre autor
http://tudominio.com/rss.php?id='.$row[id_noticia].'
';
}//cerramos el while

//Cerramos nuestras etiquetas channel y rss
echo '';
echo '';

// Elimina caracteres extraños que me pueden molestar en las cadenas que meto en los item de los RSS
function clrAll($str) {
   $str=str_replace("á","á",$str);
   $str=str_replace("é","é",$str);
   $str=str_replace("í","í",$str);
   $str=str_replace("ó","ó",$str);
   $str=str_replace("ú","ú",$str);   
   $str=str_replace("&ntilde","ñ",$str);

   return $str;
}

La función añadida al pie de página la adapte a mis necesidades por problemas con las codificaciones, como comento al inicio de esta entrada.

Hablaremos de la función para caracteres extraños más adelante, ya que tuve que crear un canal de noticias con una mescolanza de codificaciones que me tuvo en ascuas durante bastante tiempo.

No dudes en dejar tus comentarios, ideas o mejoras

[subscribe]Si te gusto esta entrada! Suscríbete a mi RSS[/subscribe]

Samuel

Consultor SEO, diseñador web, 2D y 3D, CSS. Apasionado de los gestores de contenido como oscommerce y wordpress, así como de la accesibilidad y usabilidad web. Vivo en Madrid, España. Sigueme en Twitter

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Volver arriba