Foros del Web » Programando para Internet » PHP »

Novato en rss

Estas en el tema de Novato en rss en el foro de PHP en Foros del Web. X_X holas, tengo una web, y quisiera q en ella uno se pueda suscribir y reciba noticias via correo de las actualizaciones. X_X segun he ...
  #1 (permalink)  
Antiguo 29/09/2009, 22:06
 
Fecha de Ingreso: diciembre-2004
Mensajes: 418
Antigüedad: 19 años, 11 meses
Puntos: 2
Novato en rss

X_X holas, tengo una web, y quisiera q en ella uno se pueda suscribir y reciba noticias via correo de las actualizaciones. X_X segun he investigado eso se peude hacer con rss. Enonctre este tutorial

http://www.blogoff.es/2006/08/23/cre...s-para-tu-web/

Hasta alli normal, pero solo me habla sobre la generacion del feed, no me dice nada sobre la configruacion del boton rss, ni como los usuarios se pueden registrar por mail, la mayoria de tutoriales q encuentro son para blogs. X_x necesito ayuda urgente, no se nada de este tema y agradeceria me hablaran sin tecnicismos.

Espero de su ayuda.
__________________
Veo de todo un poco, pero siempre tengo mis favoritos xD. No subestimen a Flash!
  #2 (permalink)  
Antiguo 30/09/2009, 07:18
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Novato en rss

Rss no es mail, es un simple web service que puedes implementar en php, lo único que tienes que hacer es generar un xml y enviarlo como tal:

Código PHP:
<?
header
('Content-Type: text/xml'); //Indicamos al navegador que es un documento en XML
//Versión y juego de carácteres de nuestro documento
echo <?xml version="1.0" encoding="iso-88859-1"?>;
//Aquí la conexión o archivo de conexión a la base de datos
//Hacemos la consulta y la ordenamos por post para mostrar siempre el último
$resultado=mysql_query("select * from noticias order by id_post Desc",$link);
$row=mysql_fetch_array($resultado);
//"Cortaremos" el artículo en 300 caracteres para nuestra descripción
$descripcion=substr($row[articulo],0,300)."...";
// Y generamos nuestro documento
echo '<rss version="2.0">
<channel>
    <title>Nombre de nuestro blog o web</title>
    <link>http://www.miurl.com/</link>
    <language>es-CL</language>
    <description>Descripción de nuestro blog o web</description>
    <generator>Autor del RSS</generator>
    <item>
<title>'.$row[titulo].'</title>
<link>http://www.miurl.com/noticias.php?id='.$row[id_post].'</link>
<comments>http://www.miurl.com/comentarios.php?id='.$row[id_post].'
</comments>
<pubDate>'.$row[fecha].'</pubDate>
<category>'.$row[categoria].'</category>
<guid>http://www.miurl.com/comentarios.php?id='.$row[id_post].'</guid>
<description><![CDATA['.$descripcion.']]></description>
<content:encoded><![CDATA['.$row[articulo].']]></content:encoded>
</item></channel></rss>';
?>
y para el link de referencia: <link rel="alternate" type="application/rss+xml" title="titulo" href="http://urlcompleta.php" />
  #3 (permalink)  
Antiguo 30/09/2009, 07:20
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 7 meses
Puntos: 16
Respuesta: Novato en rss

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
  1. <?php
  2. class feeds{   
  3.     public $rss_config;
  4.    
  5.     function __construct(){
  6.         $this->setConfig('host','localhost');
  7.         $this->setConfig('url','http://'.$this->rss_config['host'].'/feeds/');
  8.         $this->setConfig('limit',10);
  9.         $this->setConfig('autor','cortadoverde');
  10.         $this->setConfig('descripcion','generador de rss by ctv');
  11.         $this->setConfig('resource','articulos');
  12.     }
  13.     /**
  14.      * Especificar que rss crear
  15.      * @example setResource('articulos')
  16.      * @param $tipo
  17.      * @return unknown_type
  18.      */
  19.     function setResource($tipo){
  20.         $this->setConfig('resource',$tipo);
  21.     }
  22.  
  23.     function limitList($cant){
  24.         $this->setConfig('limit',$cant);
  25.     }
  26.    
  27.     function setAutor($autor){
  28.         $this->setConfig('autor',$autor);
  29.     }
  30.    
  31.     function setDescripcion($desc){
  32.         $this->setConfig('descripcion',$desc);
  33.     }
  34.    
  35.     function getResource(){
  36.         global $DbConn;
  37.         $resource_id = $this->__switchResource($this->rss_config['resource']);
  38.         $sql = 'SELECT * FROM post where tipo_id='.$resource_id.' ORDER BY fecha_ini DESC LIMIT '.$this->rss_config['limit'];
  39.         $res = $DbConn->query($sql);
  40.         while($arr = $DbConn->fetchAssoc($res)){
  41.             $ret[]=$arr;
  42.         }
  43.         return $ret;
  44.        
  45.     }
  46.    
  47.     function __switchResource($res){
  48.         global $DbConn;
  49.         $res = strtolower($res);
  50.         switch ($res){
  51.             case 'articulo':
  52.             case 'articulos':
  53.             case 'documentos':
  54.             case 'documentos ambientales':
  55.                         $sql = 'SELECT id FROM post_tipo where tipo="Articulo"';
  56.             break;
  57.             case 'campaña':
  58.             case 'campañas':
  59.             case 'campana':
  60.             case 'campanas':
  61.                         $sql = 'SELECT id FROM post_tipo where tipo="Campaña"';
  62.             break;         
  63.             case 'multimedia':
  64.             case 'media':
  65.             case 'campaña':
  66.             case 'archivos':
  67.                         $sql = 'SELECT id FROM post_tipo where tipo="multimedia"';
  68.             break;     
  69.             case 'pagina':
  70.             case 'paginas':
  71.                         $sql = 'SELECT id FROM post_tipo where tipo="Pagina"';
  72.             break;
  73.             default:
  74.                 $sql = 'SELECT id FROM post_tipo where tipo="Articulo"';
  75.             break; 
  76.         }
  77.         $ret = $DbConn->fetchAssoc($DbConn->query($sql));
  78.         return $ret['id'];
  79.        
  80.     }
  81.    
  82.     function createRssXML(){
  83.        
  84.         $xml = "<?xml version='1.0' encoding='iso-8859-1'?>
  85.                     <rss version='2.0'>";
  86.    
  87.         $xml .= '
  88.                 <channel>
  89.                     <title>'.$this->rss_config['titulo'].'</title>
  90.                     <link>'.$this->rss_config['url'].'</link>
  91.                     <description>'.$this->rss_config['descripcion'].'</description>
  92.                     <language>es-ES</language>
  93.                 ';
  94.        
  95.         //obtengo los datos
  96.         $conResource = $this->getResource();
  97.         foreach($conResource as $num => $item){
  98.             $cont = samucode($item['contenido']);
  99.             $cont = strip_tags($cont);
  100.             //$cont = htmlentities($cont);
  101.             $xml .= '
  102.                     <item>
  103.                         <title>'.$item['titulo'].'</title>
  104.                         <link>http://'.$this->rss_config['host'].'/post/ver/id/'.$item['id'].'</link>
  105.                         <description>'.mb_substr($cont,0,200).'</description>
  106.                     </item>';
  107.         }
  108.        
  109.         $xml .= '</channel>
  110.                 </rss>';
  111.        
  112.         $hand = fopen($this->rss_config['saveXml'],'w+');
  113.         fwrite($hand,$xml);
  114.         fclose($hand);
  115.                
  116.     }
  117.    
  118.    
  119.    
  120.    
  121.    
  122.     function setConfig($key,$value){
  123.         if(@array_key_exists($key,$this->rss_config)){
  124.             unset($this->rss_config[$key]);
  125.         }
  126.         $this->rss_config[$key]=$value;
  127.     }
  128. }
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
  1. $newFeed = new feeds();
  2. $newFeed->setResource('articulos');
  3. $newFeed->setConfig('saveXml','xml/articulos2.xml');
  4. $newFeed->createRssXML();

Definir saveXml ya que sino no se podra guardar el archivo
  #4 (permalink)  
Antiguo 30/09/2009, 18:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 418
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Novato en rss

primero q nada, agradezco sus rptas. No se si se entendio bien lo q necesito. Entendi los codigos y me serian muy utiles, no obstante, mi web no es tan grande, usa BD, pero algunas secciones no usan, por ejemplo tengo una seccion q lee los archivos de una carpeta y esos son los q muestra no usa Bd en este caso. Si lo hice asi es q por q es una web personal, no necesito de un admin para hacer todo eso ya q yo mismo entiendo como funciona mi web.

Lo que yo quiero es q quienes esten interesados en mi web se puedan suscribir y cuando yo haga algun cambio, redacto cual es el cambio y lo envio, automaticamnte los suscritos reciban una correo avisando del cambio. X_X gracias de antemano.
__________________
Veo de todo un poco, pero siempre tengo mis favoritos xD. No subestimen a Flash!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:18.