2008-11-02 6 views
6

Ich habe es nie selbst gemacht, und ich habe noch nie einen Feed abonniert, aber es scheint, dass ich einen erstellen muss, also frage ich mich. Der einzige Weg, der mir offensichtlich erscheint, ist, dass ein neues Element in die rss-Datei geschrieben werden sollte, wenn das System mit einem neuen Element aktualisiert wird (Blogpost, Neuigkeiten, was auch immer). Oder alternativ ein Skript, das mehrmals am Tag nach Updates für das System sucht und in die rss-Datei schreibt. Es gibt wahrscheinlich einen besseren Weg, es zu tun.Wie generieren Sie einen RSS-Feed?

Und sollten auch alte Elemente entfernt werden, wenn neue hinzugefügt werden?

Bearbeiten: Ich hätte erwähnt, ich arbeite in PHP, insbesondere mit CodeIgniter, mit einer MySQL-Datenbank.

+0

Hat CodeIgniter keine RSS-Unterstützung? – DisgruntledGoat

Antwort

3

Ich würde sagen, die Antwort ist ein RSS-Feed sein nichts anderes als eine andere Ansicht Ihrer Daten. Dies bedeutet, dass Ihr RSS-Feed einfach eine XML-Repräsentation der Daten in Ihrer Datenbank ist. Die Leser können dann diese spezifische URL aufrufen und die aktuellen Informationen in Ihrer Anwendung abrufen.

3

Ein RSS-Feed ist nur ein XML-Dokument, das einem bestimmten Schema entspricht.

Werfen Sie einen Blick here

Welche Sprache sind Sie in der Arbeit? Sie können die XML-Ausgabe einfach anhand von Inhalten in Ihrer Anwendung skripten. Sie müssen die Datei nicht explizit im Dateisystem speichern. Es kann nur im laufenden Betrieb erstellt werden

+0

Ich arbeite in PHP. – thesmallprint

0

Hier ist eine einfache ASP.NET 2 basierte RSS-Feed, den ich als Live-Lesezeichen für meine Localhost dev-Sites verwenden. Könnte Ihnen helfen, loszulegen:

<%@ 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

Es wird immer noch ziemlich ähnlich in PHP sein, wie die anderen Beiträge darauf hinweisen, RSS ist nur ein Geschmack von XML. Stellen Sie sicher, dass der Inhaltstyp auf 'text/xml' gesetzt ist, damit der Browser/RSS-Feed-Reader weiß, was er bekommt – Nick

0

Ein RSS-Feed ist nur ein XML-Dokument in einer bestimmten Form formatiert und von einer Webseite verlinkt.

Werfen Sie einen Blick auf diese Seite (http://cyber.law.harvard.edu/rss/rss.html), die die RSS-Spezifikation, gibt Beispiele RSS-Dateien für Sie zu sehen und zeigt Ihnen, wie Sie auf Ihrer Website verlinken.

Wie Sie das Dokument erstellen, bleibt Ihnen überlassen. Sie könnten es manuell in einen Texteditor schreiben, ein sprachspezifisches XML-Objekt verwenden oder eine ASPX/PHP/andere Seite drücken und die korrekten Inhaltstyp-Header zusammen mit dem RSS-Dokument senden.

Es ist nicht so schwer, wenn Sie sich damit befassen. Viel Glück!

2

Ich habe gute Ergebnisse von Magpie RSS. Richten Sie den enthaltenen Cache ein, und Sie müssen lediglich die Abfrage schreiben, um Ihre Daten abzurufen, und das Ergebnis an Magpie RSS senden, die dann die Aktualisierungsfrequenz behandelt.

Ich würde keine RSS-Datei schreiben, es sei denn, Ihr Server ist besonders stark ausgelastet - eine Abfrage (oder eine Reihe von Abfragen, die zu einem Array hinzugefügt werden) für aktuelles Zeug ist alles was Sie brauchen. Schreiben Sie die Abfrage nach Datum und dann nach X, und Sie müssen sich auch nicht darum kümmern, alte Sachen zu entfernen.

0

Es gibt zwei Möglichkeiten, dies zu erreichen. Die erste besteht darin, das RSS-Dokument dynamisch auf Anfrage zu erstellen. Die zweite besteht darin, in eine statische Datei zu schreiben, wenn eine relevante Änderung eintritt. Letzteres ist schneller, erfordert jedoch einen Aufruf, um den Feed (wahrscheinlich) an vielen Stellen im Vergleich zu nur einem zu aktualisieren.

Mit beiden Methoden, während Sie das Dokument nur mit den Änderungen bearbeiten konnten, ist es viel einfacher, das gesamte Dokument jedes Mal mit den neuesten (10-50) Elementen neu zu schreiben.

6

Für PHP I feedcreator verwenden 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 und die Demos erfordern register globals – Znarkus

0

Wenn Sie einen Feed von Elementen erzeugen möchten, die bereits in HTML vorhanden sind, ist eine Option, um Ihre HTML-Markup zu ändern hAtom (http://microformats.org/wiki/hAtom) und dann Punkt zu verwenden, Feed-Reader über einen hAtom-> Atom oder hAtom-> RSS-Proxy.

Verwandte Themen