2008-11-02 16 views
6

Nunca lo he hecho yo mismo, y nunca me he suscrito a un feed, pero parece que voy a tener que crear uno, así que me pregunto. La única forma que parece evidente para mí es que cuando el sistema se actualiza con un nuevo elemento (publicación de blog, noticia, lo que sea), debe escribirse un nuevo elemento en el archivo rss. O, alternativamente, tiene un script que busca actualizaciones en el sistema varias veces al día y escribe en el archivo rss. Sin embargo, es probable que haya una mejor manera de hacerlo.¿Cómo se genera una fuente RSS?

Y también, ¿se deben eliminar los elementos antiguos a medida que se agregan los nuevos?

Editar: Debería haber mencionado, estoy trabajando en PHP, específicamente usando CodeIgniter, con una base de datos mySQL.

+0

¿CodeIgniter no tiene soporte RSS? – DisgruntledGoat

Respuesta

3

Diría que la respuesta es tener una fuente RSS no es más que otra vista de sus datos. Esto significa que su feed rss es simplemente una representación xml de los datos en su base de datos. Luego, los lectores podrán acceder a esa URL específica y recuperar la información actual en su aplicación.

3

Una fuente RSS es solo un documento XML que se ajusta a un esquema específico.

Tener una mirada here

Qué idioma estás trabajando en? Puede guiar fácilmente la salida xml en función de algún contenido de su aplicación. No necesita guardar explícitamente el archivo en el sistema de archivos. Puede simplemente crearse sobre la marcha

+0

Estoy trabajando en PHP. – thesmallprint

0

Aquí hay una fuente RSS simple basada en ASP.NET 2 que utilizo como un marcador en vivo para mis sitios dev localhost. Podría ayudarlo a comenzar:

<%@ Page Language="C#" EnableViewState="false" %> 
<%@ OutputCache Duration="300" VaryByParam="none" %> 

<%@ Import Namespace="System" %> 
<%@ Import Namespace="System.Configuration" %> 
<%@ Import Namespace="System.Web" %> 
<%@ Import Namespace="System.Web.Security" %> 
<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace="System.Xml" %> 
<%@ Import Namespace="System.Text" %> 
<%@ Import Namespace="System.DirectoryServices" %> 

<script runat="server"> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    System.Collections.Specialized.StringCollection HideSites = new StringCollection(); 
    System.Collections.Generic.List<string> Sites = new System.Collections.Generic.List<string>(); 

    HideSites.Add(@"IISHelp"); 
    HideSites.Add(@"MSMQ"); 
    HideSites.Add(@"Printers"); 

    DirectoryEntry entry = new DirectoryEntry("IIS://LocalHost/W3SVC/1/ROOT"); 
    foreach (DirectoryEntry site in entry.Children) 
    { 
     if (site.SchemaClassName == "IIsWebVirtualDir" && !HideSites.Contains(site.Name)) 
     { 
      Sites.Add(site.Name); 
     } 
    } 

    Sites.Sort(); 

    Response.Clear(); 
    Response.ContentType = "text/xml"; 
    XmlTextWriter RSS = new XmlTextWriter(Response.OutputStream, Encoding.UTF8); 
    RSS.WriteStartDocument(); 
    RSS.WriteStartElement("rss"); 
    RSS.WriteAttributeString("version","2.0"); 
    RSS.WriteStartElement("channel"); 
    RSS.WriteElementString("title", "Localhost Websites"); 
    RSS.WriteElementString("link","http://localhost/sitelist.aspx"); 
    RSS.WriteElementString("description","localhost websites"); 

    foreach (string s in Sites) 
    { 
     RSS.WriteStartElement("item"); 
     RSS.WriteElementString("title", s); 
     RSS.WriteElementString("link", "http://localhost/" + s); 
     RSS.WriteEndElement(); 
    } 

    RSS.WriteEndElement(); 
    RSS.WriteEndElement(); 
    RSS.WriteEndDocument(); 
    RSS.Flush(); 
    RSS.Close(); 
    Response.End(); 
} 

</script> 
+0

Todavía será bastante similar en PHP, ya que las otras publicaciones señalan que RSS es solo un sabor de XML. Asegúrese de que el tipo de contenido esté configurado en 'text/xml' para que el navegador/lector de RSS lo sepa lo que está obteniendo – Nick

0

Una fuente RSS es simplemente un documento XML formateado de cierta manera y enlazado desde una página web.

Eche un vistazo a esta página (http://cyber.law.harvard.edu/rss/rss.html) que detalla la especificación RSS, proporciona ejemplos de archivos RSS para que los vea y le muestre cómo vincularlos desde su sitio.

Cómo se crea el documento depende de usted. Puede escribirlo manualmente en un editor de texto, usar un objeto XML específico del idioma, o presionar una página ASPX/PHP/otra y enviar los encabezados de tipo de contenido correctos junto con el documento RSS.

No es tan difícil cuando llega el momento. ¡buena suerte!

2

Tengo buenos resultados en Magpie RSS. Configure la caché incluida y todo lo que necesita hacer es escribir la consulta para recuperar sus datos y enviar el resultado a Magpie RSS, que luego maneja la frecuencia de actualización.

No estaría escribiendo un archivo RSS, a menos que su servidor tenga una carga especialmente pesada; una consulta (o una serie de consultas que se suman a una matriz) para cosas actualizadas es todo lo que necesita. Escriba la/s consulta/s para ordenar por fecha y luego limitadas por X y tampoco tendrá que preocuparse por 'eliminar cosas viejas'.

0

Hay dos formas de abordar esto. El primero es crear el documento RSS dinámicamente a pedido. El segundo es escribir en un archivo estático cuando ocurre un cambio relevante. Este último es más rápido, pero requiere una llamada para actualizar el feed en (probable) muchos lugares frente a uno solo.

Con ambos métodos, si bien podría editar el documento con solo los cambios, es mucho más simple reescribir el documento completo cada vez con los elementos más recientes (10-50).

6

Para PHP utilizo feedcreator http://feedcreator.org/

<?php define ('CONFIG_SYSTEM_URL','http://www.domain.tld/'); 

require_once('feedcreator/feedcreator.class.php'); 

$feedformat='RSS2.0'; 

header('Content-type: application/xml'); 

$rss = new UniversalFeedCreator(); 
$rss->useCached(); 
$rss->title = "Item List"; 
$rss->cssStyleSheet=''; 
$rss->description = 'this feed'; 
$rss->link = CONFIG_SYSTEM_URL; 
$rss->syndicationURL = CONFIG_SYSTEM_URL.'feed.php'; 


$articles=new itemList(); // list of stuff 
foreach ($articles as $i) { 
    $item = new FeedItem(); 
    $item->title = sprintf('%s',$i->title); 
    $item->link = CONFIG_SYSTEM_URL.'item.php?id='.$i->dbId; 
    $item->description = $i->Subject; 
    $item->date = $i->ModifyDate; 
    $item->source = CONFIG_SYSTEM_URL; 
    $item->author = $i->User; 
    $rss->addItem($item); 
} 

print $rss->createFeed($feedformat); 
+1

Ugh, PHP4 y las demos requieren un registro global – Znarkus

0

Si desea generar una fuente de elementos que ya existen en HTML, una opción es modificar el formato HTML para utilizar hAtom (http://microformats.org/wiki/hAtom) y luego el punto alimentar lectores a través de un hAtom-> Atom o hAtom-> RSS proxy.

Cuestiones relacionadas