una cosa son los rss y otra los boletines de novedades.
si vas a utilizar rss tenes que mantener actualizados los registros, si te sirve te dejo una clase que hice hoy para un sitio
Código php:
Ver original<?php
class feeds{
public $rss_config;
function __construct(){
$this->setConfig('host','localhost');
$this->setConfig('url','http://'.$this->rss_config['host'].'/feeds/');
$this->setConfig('limit',10);
$this->setConfig('autor','cortadoverde');
$this->setConfig('descripcion','generador de rss by ctv');
$this->setConfig('resource','articulos');
}
/**
* Especificar que rss crear
* @example setResource('articulos')
* @param $tipo
* @return unknown_type
*/
function setResource($tipo){
$this->setConfig('resource',$tipo);
}
function limitList($cant){
$this->setConfig('limit',$cant);
}
function setAutor($autor){
$this->setConfig('autor',$autor);
}
function setDescripcion($desc){
$this->setConfig('descripcion',$desc);
}
function getResource(){
global $DbConn;
$resource_id = $this->__switchResource($this->rss_config['resource']);
$sql = 'SELECT * FROM post where tipo_id='.$resource_id.' ORDER BY fecha_ini DESC LIMIT '.$this->rss_config['limit'];
$res = $DbConn->query($sql);
while($arr = $DbConn->fetchAssoc($res)){
$ret[]=$arr;
}
return $ret;
}
function __switchResource($res){
global $DbConn;
switch ($res){
case 'articulo':
case 'articulos':
case 'documentos':
case 'documentos ambientales':
$sql = 'SELECT id FROM post_tipo where tipo="Articulo"';
break;
case 'campaña':
case 'campañas':
case 'campana':
case 'campanas':
$sql = 'SELECT id FROM post_tipo where tipo="Campaña"';
break;
case 'multimedia':
case 'media':
case 'campaña':
case 'archivos':
$sql = 'SELECT id FROM post_tipo where tipo="multimedia"';
break;
case 'pagina':
case 'paginas':
$sql = 'SELECT id FROM post_tipo where tipo="Pagina"';
break;
default:
$sql = 'SELECT id FROM post_tipo where tipo="Articulo"';
break;
}
$ret = $DbConn->fetchAssoc($DbConn->query($sql));
return $ret['id'];
}
function createRssXML(){
$xml = "<?xml version='1.0' encoding='iso-8859-1'?>
<rss version='2.0'>";
$xml .= '
<channel>
<title>'.$this->rss_config['titulo'].'</title>
<link>'.$this->rss_config['url'].'</link>
<description>'.$this->rss_config['descripcion'].'</description>
<language>es-ES</language>
';
//obtengo los datos
$conResource = $this->getResource();
foreach($conResource as $num => $item){
$cont = samucode($item['contenido']);
//$cont = htmlentities($cont);
$xml .= '
<item>
<title>'.$item['titulo'].'</title>
<link>http://'.$this->rss_config['host'].'/post/ver/id/'.$item['id'].'</link>
<description>'.mb_substr($cont,0,200).'</description> </item>';
}
$xml .= '</channel>
</rss>';
$hand = fopen($this->rss_config['saveXml'],'w+');
}
function setConfig($key,$value){
unset($this->rss_config[$key]); }
$this->rss_config[$key]=$value;
}
}
en la clase utilizo una global para la base de datos, podes cambiarlo por una conexion propia y va a andar mode de uso
Código php:
Ver original$newFeed = new feeds();
$newFeed->setResource('articulos');
$newFeed->setConfig('saveXml','xml/articulos2.xml');
$newFeed->createRssXML();
Definir saveXml ya que sino no se podra guardar el archivo