Web-Feeds

für die Liste aller Seiten

Administratoren (Fortgeschrittene)

< Skinvorlagen | Dokumentations-Index | Site-Präferenzen >

Ein Feed ist eine bequeme Möglichkeit, Besucher über Änderung an einer Website benachrichtigen zu lassen. Anstatt also jeden Tag die Seite RecentChanges zu überprüfen, um herauszufinden was sich geändert hat, kann ein Besucher einen Newsaggregator nutzen, um schnell zu sehen, welche interessanten Seiten sich auf einer Website geändert haben. Diese Benachrichtigung kann man dann im RSS-fähigen Programm auslesen. Webfeeds erkennt man gewöhnlich an Ausdrücken wie RSS, Atom und Web-Syndication. Sie sind auch Grundlage für Podcasts. (Um Benachrichtigungen per E-Mail zu erhalten, sollten Sie sich E-Mail Nachricht bei geänderten Seiten / E-Mail Nachricht bei geänderten Seiten (neu) ansehen.)

Wikitrails als Grundlage

In der einfachsten Form basieren Feeds in PmWiki auf Seitenabfolgen. Benutzen Sie eine Feed-Aktion wie ?action=rss oder action=atom auf einem Trail, wird ein Web-Feed erzeugt (oft "channel" genannt), wo jede in dem Trail vorkommende Seite ein Item in dem Feed ist. RecentChanges- oder AllRecentChanges-Seiten sind definitiv Trails, somit können Sie jede RecentChanges- oder AllRecentChanges-Seite aus jeder Gruppe und des gesamten Webauftritts als Quelle für den RSS-Feed verwenden. Fügen Sie einfach ?action=rss an den URL einer RecentChanges-Seite an. Wenn Sie zum Beispiel einen Feed für pmwiki.org erhalten wollen, benutzen Sie

Und solange Besucher Seiten bearbeiten können, können Sie auch angepasste Feeds haben, ohne den Administartor um Hilfe bitten zu müssen. Alles was sie tun müssen ist eine Referenzseite der Seitenabfolgen zu erzeugen, die die Seiten enthält, über deren Änderungen sie benachrichtigt werden möchten. Feeds können auch von Gruppen, Kategorien und Rückverweisen erzeugt werden und die Reihenfolge und Anzahl der Items können durch Optionen in dem URL verändert werden. So könnten Sie einen Feed für die Skins-Kategory (sortiert mit den wichtigsten zuerst) abfordern, in dem Sie dies benutzen:

PmWiki ist in der Lage, Feeds in vielen Formaten zu liefern, einschließlich RSS 2.0 (?action=rss), Atom 1.0 (?action=atom) und RSS 1.0 (?action=rdf). Zusätzlich, obwohl es normalerweise nicht als Web-Feed angesehen wird, kann PmWiki Metadateninformationen erzeugen, indem die 'Dublin Core Metadata extensions' benutzt werden (?action=dc).
Technisch gesprochen ist ein Feed ein XML Dokument, das einem zusammenfassenden Format wie RSS oder Atom folgt. Es listet die letzten N Änderungen auf (wobei die Zahl N vom Anbieter des Feeds festgelegt wird) und gibt deren Überschriften zurück. Wenn der Feed-Anbieter es so eingestellt hat, können auch Zusammenfassungen des Inhalts oder sogar der komplette Text der Änderung angezeigt werden.

Wie liest man PmWiki-Feeds

  1. Man braucht einen Feedreader. Das ist ein Stück Software, mit dem man Feeds lesen kann. Es gibt viele verschiedene RSS-Reader. Manche laufen als eigenständiges Programm auf dem Computer oder als App auf dem Smartphone, andere sind Zusatzprogramme für E-Mail-Programme, Webbrowser oder Newsreader. Wieder andere sind Web-Applikationen, die von jedem mit dem Internet verbundenen Computer aus genutzt werden können. Manche liegen auch irgendwo dazwischen (technisch gesehen Web-Applikationen, allerdings so entwickelt, dass sie auf dem eigenen Rechner laufen). Holen Sie sich den, der Ihnen gefällt.
  2. Abonnieren Sie die gewünschte Seitenabfolge, indem Sie den Feeder mit dem URL versorgen. Hängen Sie ?action=rss an das Ende der Internetadresse an, die Sie abonnieren möchten. Wenn Sie also die Seite Site.AllRecentChanges von pmwiki.org abonnieren möchte, tun Sie das mit der Adresse https://pmwiki.org/wiki/Site/AllRecentChanges?action=rss im RSS-Reader.

Feed-Optionen

Fügen Sie beliebige der folgenden Optionen an das Ende des PmWiki-Web-Feed-URLs, um dessen Ausgabe zu ändern (im Grunde genommen ist jede pagelist-Option? für Web-Feeds einzusetzen):

?count=n
Begrenzt den Feed auf n Einträge (voreingestellt: 10).
?order=-time
Zeigt die jüngsten Einträge zuerst an (voreingestellt: die Reihenfolge im Trail oder nach Namen; in RecentChanges-Seiten ist der Trail bereits nach -time sortiert).
?trail=Seite
Bezieht die Einträge vom Trail in Seite (voreingestellt: ein Trail der aktuellen Seite).
?group=Gruppe
Begrenzt den Feed auf Seiten der Gruppe.
?name=Seite
Begrenzt den Feed auf die angegebene Seite.
?link=Seite
Erzeugt einen Feed von Seiten, die auf die Seite verweisen.
?list=normal
Schließe Dinge wie RecentChanges, AllRecentChanges etc. aus.

Autoren (Fortgeschrittene)

PmWiki für Feeds konfigurieren

Dieser Abschnitt beschreibt, wie Sie Teile eines Wikis aufbereiten, um es in einem Web-Feed zu präsentieren. Es wird nicht beschrieben, wie Sie ein Web-Feed in einer Wiki-Seite darstellen – siehe dazu Cookbook:RssFeedDisplay.

Um eine Web-Feed-Erzeugung für eine Site zu ermöglichen, fügen Sie eine oder mehrere der folgenden Zeilen zu einer Ihrer Lokale Anpassungen-Dateien (z. B. local/config.php-Datei) hinzu:

if ($action == 'rss') include_once("$FarmD/scripts/feeds.php");
if ($action == 'atom') include_once("$FarmD/scripts/feeds.php");
if ($action == 'rdf') include_once("$FarmD/scripts/feeds.php");
if ($action == 'dc') include_once("$FarmD/scripts/feeds.php");

Oder Sie kombinieren mehrere Feeds in einem einzigen Ausdruck , wobei Sie "||" benutzen, um die Feed-Typen voneinander zu trennen. Wenn Sie z. B. RSS- und Atom-Feeds aktivieren wollen, schreiben Sie:

if ($action == 'rss'  ||
    $action == 'atom' ||
    $action == 'rdf'  ||
    $action == 'dc') include_once("$FarmD/scripts/feeds.php");

Feed-Inhalt konfigurieren

Web-Feeds sind im höchsten Grade konfigurierbar, neue Elemente können leicht zu Feeds über das $FeedFmt-Array hinzugefügt werden. Elemente in $FeedFmt sehen so aus:

$FeedFmt['atom']['feed']['rights'] = 'All Rights Reserved';

Dabei korrespondiert der erste Index mit der Aktion (?action=atom), der zweite Index indiziert ein Per-Feed- oder Per-Item-Element und der dritte Index ist der Name des erzeugten Elements. Die obige Einstellung erzeugt demnach ein "<rights>All Rights Reserved</rights>" in dem Feed für ?action=atom.

Wenn der Wert eines Eintrags mit einem '<' beginnt, wird feed.php nicht automatisch ein Tag darumherum hinzufügen. Elemente können auch aufrufbare Funktionen (callable functions) sein, welche aufgerufen werden, um die passenden Ausgabe zu erzeugen. Siehe RSS specification oder andere Feed-Spezifikationen wegen des möglichen Inhalts der Elemente.

Sie können auch einen existierenden Eintrag ändern anstatt einen neuen zu erzeugen. Benutzen Sie die folgenden Zeilen, um sicherzustellen, dass Änderungen am Wiki von einigen RSS-Readern aufgenommen werden, die andernfalls "keine Notiz" von der Änderung nehmen würden:

# Ändere den Verweis-URL, wenn ein Item bearbeitet wird.
$FeedFmt['rss']['item']['link'] = '{$PageUrl}?when=$ItemISOTime';
$FeedFmt['atom']['item']['link'] =
   "<link rel=\"alternate\" href=\"{\$PageUrl}?when=\$ItemISOTime\" />\n";

Siehe auch

FAQ

Wie füge ich dem Feed-Body Text von der Seite hinzu (ganze Seite oder die ersten X Zeichen)? (Und bitte: KEIN markup)

function MarkupExcerpt($pagename) {
      $page = RetrieveAuthPage($pagename, 'read', false);
      return substr(@$page['text'], 0, 200);
    }

    $FmtPV['$MarkupExcerpt'] = 'MarkupExcerpt($pn)';
    $FeedFmt['rss']['item']['description'] = '$MarkupExcerpt';

Heißt das, wenn ich die Zeit im RSS-Titel und "summary" im RSS-Body einfügen will, muss ich FeedFmt zweimal wie folgt aufrufen?

$FeedFmt['rss']['item']['description'] = '$LastSummary'; 
$FeedFmt['rss']['item']['title'] = '{$Group} / {$Title} @ $ItemISOTime';
From mailing list Feb 13,2007, a response by Pm: Yes

Wie nutze ich das RSS-<enclosure>-Tag für Podcasting?

Für Podcasting von mp3-Dateien hängen Sie einfach eine mp3-Datei an die Seite an, und zwar mit dem gleichen Namen wie die Seite (z. B. für eine Seite namens Podcast.Episode4 würden Sie eine Datei namens "Episode4.mp3" an die Seite anhängen). Die Datei wird automatisch durch ?action=rss aufgenommen und als eine Anlage behandelt.

Der Satz an möglichen 'enclosures' (Anlagen) ist vom $RSSEnclosureFmt-Array vorgegeben, demnach erlaubt

$RSSEnclosureFmt = array('{$Name}.mp3', '{$Name}.wma', '{$Name}.ogg');

Podcasting in mp3-, wma- und ogg-Formaten.

Wie füge ich eine Zusammenfassung ("summary") zum Titel in einem RRS-Feed hinzu (d. h. mit ?action=rss)?

Fügen Sie diese Zeile in Ihre local/config.php-Datei ein:

$FeedFmt['rss']['item']['title'] = '{$Group} / {$Title} : $LastModifiedSummary';

Wie füge ich die Beschreibung ("description") zum Titel und die "summary" zum Body hinzu?

Fügen Sie diese Zeilen in Ihre local/config.php-Datei ein:

$FeedFmt['rss']['item']['title'] = '{$Group} / {$Title} : {$Description}';
$FeedFmt['rss']['item']['description'] = '$LastModifiedSummary';

Bemerkungen:

  • Sie müssen diese Zeilen für jeden Typ (atom, rdf,dc), den Sie anbieten wollen, wiederholen.
  • Das RSS-description-Tag ist nicht äquivalent zu der PmWiki-$Description-Variable, ungeachtet der verwirrenden Ähnlichkeit.

Einige meiner passwortgeschützten Seiten erscheinen nicht im Feed... wie umgehe ich das?

Pms Antwort auf eine ähnliche Frage in der Newsgroup:

Beim letzten Mal, als ich das überprüft habe, hatten RSS und andere Syndication-Protokolle kein wohl etabliertes Interface oder Mechanismen für die Durchführung von Zugriffkontrollen (d. h. Authentifikation). So weit ich weiß, ist das noch immer der Fall.

PmWikis Web-Feed-Fähigkeiten ist auf Seitenlisten aufgebaut, so ist es gut möglich, das die $EnablePageListProtect-Option das Erscheinen einer aufgefrischten Seite verhindert. Sie könnten versuchen, $EnablePageListProtect=0; zu setzen und zu schauen, ob die passwortgeschützte Seite erscheint.

Die "Kehrseite" zum Setzen der Variablen $EnablePageListProtect auf null ist, dass jeder, der eine Suche in Ihrer Site durchführt, die Existenz der Seiten in dem gesperrten Abschnitt erfährt. Die Seiten wird niemand lesen können, aber sie wissen, sie sind da!

Sie könnten $EnablePageListProtect nur für ?action=rss auf null setzen:

if ($action == 'rss') $EnablePageListProtect = 0;

Das schränkt die Möglichkeit, geschützte Seiten zu sehen, auf die RSS-Feeds ein. Normale Seitenlisten und Suchergebnisse sehen diese Seiten nicht.

Letztlich ist es auch möglich, das Web-Feed so zu konfigurieren, dass es die Authentifikations-Informationen direkt aus dem URL bezieht, wie in

    .../Site/AllRecentChanges?action=rss&authpw=secret

Der große Nachteil ist, dass das Passwort im Klartext mit jedem RSS-Aufruf durch das Netz wandert und endet darin, dass es in Apaches Access-Logs gespeichert wird.

Wie fügt man Feed-Bilder hinzu?

Fügen Sie diese Zeilen in Ihre local/config.php-Datei ein (das Beispiel ist für ?action=rss):

$FeedFmt['rss']['feed']['image'] =
" <title>Logo title</title>
 <link>https://example.com/</link>
 <url>https://example.com/images/logo.gif</url>
 <width>120</width>
 <height>60</height>";
Vergessen Sie nicht, NICHT mit einem "<" zu beginnen (sondern mit einem Leerzeichen), da es sonst kein <image>-Tag darumherum gäbe... siehe hier.

Wie füge ich RRS-News-Feeds in eine PmWiki-Seite ein?

See Cookbook:RssFeedDisplay.

Wie kann ich Standard-Feed-Optionen in einer Konfigurationsdatei setzen anstatt dass ich sie jedesmal in den URL setze?

Wenn Sie zum Beispiel ?action=rss standardmäßig zu ?action=rss&group=News&order=-time&count=10 machen wollen, fügen Sie diese Zeilen in Ihre local/config.php-Datei ein:

   if ($action == 'rss')
     SDVA($_REQUEST, array(
       'group' => 'News',
       'order' => '-time',
       'count' => 10));

Gibt es Wege, wie Besucher leicht ein Web-Feed abonnieren können?

In einigen Browser (Mozilla Firefox) können Besucher ein orangenes RSS-Icon in der Adresszeile sehen und abonnieren den Feed, indem sie darauf klicken. Um RSS-Icons zu aktivieren, fügen Sie diese Zeilen in Ihre local/config.php-Datei ein:

$HTMLHeaderFmt['feedlinks'] = '<link rel="alternate" type="application/rss+xml" 
  title="$WikiTitle" href="$ScriptUrl?n=Site.AllRecentChanges&amp;action=rss" />
<link rel="alternate" type="application/atom+xml" title="$WikiTitle"
  href="$ScriptUrl?n=Site.AllRecentChanges&amp;action=atom" />';

Sie können auch einen solchen Verweis zum Beispiel in ihre SideBar setzen: [[Site.AllRecentChanges?action=atom | Subscribe to feed]].

Kann ich ein RSS-Feed für einzelne Seiten-Versionen erzeugen?

See Cookbook:PageFeed.

Wie erzeuge ich eine Feed-Seite ähnlich wie RecentChanges oder AllRecentChanges, die aber nur bestimmte Gruppen oder Seiten enthält?

Siehe Cookbook:CustomRecentChanges. In Kürze: Sie deklarieren eine $RecentChangesFmt-Variable mit Ihren bevorzugten Feed-Seite und kleiden sie in eine Bedingung Ihrer Wahl ein. Zum Beispiel:

   if (PageVar($pagename, '$Group')!='ForbiddenGroup') {
     $RecentChangesFmt['Site.MyFeedPage'] =
       '* [[{$FullName}]]  . . . $CurrentTime $[by] $AuthorLink: [=$ChangeSummary=]';
   }

Wie kann ich mein RSS-Feed updaten, um jede Änderung an einer Seite zu zeigen und nicht nur neu erzeugte Seiten?

Fügen Sie einen einzigartigen GUID-Verweis für jede Änderung in Ihre local/config.php-Datei ein (siehe PITS-Eintrag):

   $FeedFmt['rss']['item']['guid'] = '{$PageUrl}?guid=$ItemISOTime';

Alternativ können Sie die Option für Änderungsüberwachungen erzeugen, indem sie einen Qualifier für RSS-Links hinzufügen. Das erlaubt den Besuchern zwischen Standard-neue Seiten-RSS-Feeds und neue Änderungen-RSS-Feeds zu wählen (in PmWiki ist diese Option aktiviert):

   ## For new pages updates: https://example.com/wiki/HomePage?action=rss
   ## For edits updates: https://example.com/wiki/HomePage?action=rss&edits=1
   if(@$_REQUEST['edits'] && $action == 'rss')
     $FeedFmt['rss']['item']['guid'] = '{$PageUrl}?guid=$ItemISOTime';

für die Liste aller Seiten

< Skinvorlagen | Dokumentations-Index | Site-Präferenzen >


Übersetzung von PmWiki.WebFeeds,   Originalseite auf PmWikiDe.WebFeeds   —   Backlinks

Zuletzt geändert:   PmWikiDe.WebFeedsam 01.03.2022
 PmWiki.WebFeedsam 01.03.2022