News-Anzeige einbauen
Jede Weblog-Software, die was auf sich hält, bietet die Möglichkeit RSS-Feeds zu erzeugen. Dies ist eine Möglichkeit, Nachrichten über ein genormtes Format auszutauschen. Verschiedene Nachrichtenmagazine bieten z.B. Newsfeeds an. Mit einem passenden Programm kann man sich so immer die neuesten Meldungen z.B. vom Spiegel auf den Bildschirm holen. So einen Newsfeed möchte ich mit den WebSozi-News den Besuchern meiner Homepage ebenfalls anbieten.
Da WordPress keine eingebaute Funktion für diesen Zweck hat, kommt mal wieder ein Plugin zum Einsatz. Die Suche im WordPress-Wiki brachte mich zu CG-Feedread von David Chait.
Die Installation ist etwas aufwändiger, da das Skript auch ohne WordPress eingesetzt werden kann.
Das ganze Archiv sollte unter Beibehaltung der Ordnrstruktur entpackt werden.
Wenn alles richtig lief, sehen nach dem Upload die WordPress-Ordner auf dem Server so aus wie rechts dargestellt.
Um den Newsfeeds nicht bei jedem Laden der Seite anfordern zu müssen, werden die Nachrichten im Ordner cache_rssfeeds zwischengespeichert. Deshalb müssen die Zugriffsrechte auf Lesen und Schreiben für alle (chmod 666) eingestellt werden. Mit dem FTP-Programm lässt sich das einfach erledigen.
Die Einbindung in die Seite erfolgt mit einem Mehrzeiler. Ein Beispiel wäre
<?php $feedUrl = "http://news.com.com/2547-1040_3-0-5.xml";
$feedOut = parseURL($feedUrl, 4, false, "feed-cnetttech", '', 36, false);
if ($feedOut)
echo $feedOut;
?>
In der ersten Zeile wird mit $feedUrl = "http://news.com.com/2547-1040_3-0-5.xml"; die Adresse des Newsfeeds angegeben. Über $feedOut = parseURL($feedUrl, 4, false, "feed-cnetttech", '', 36, false); wird die Darstellung eingestellt. Hat alles geklappt, werden die Nachrichten angezeigt.
Die Darstellung lässt sich auf die eigenen Wünsche anpassen. Dazu dienen die Parameter der Funktion parseURL();
Einstellungen vornehmen
Die Funktion parseURL() kann mit 10 Parameter aufgerufen werden, die hier nochmals erklärt werden.
function parseURL($InUrl, $numberOfItems, $showDetails, $cacheName, $filterCat='',$tLimit = -1, $dLimit = -1,$noHTML = 1, $showTime = false, $likeWPPosts = false))
$InUrl
Die vollständige URL für den Newsfeed.
$numberOfItems
Anzahl der angezeigten Nachrichten. Sortiert von Neu nach Alt.
$showDetails
Nur die Überschrift anzeigen, oder auch noch die Einzelheiten?
$cacheName
Der Dateiname für die Zwischenspeicherung. Für jeden Newsfeed muss ein eigener Name vergeben werden.
Hinweis: Die globale Variable $CACHE_TIME legt die Zeit fest, nach der der Newsfeed wieder neu angefordert wird. Wenn hierzu nichts angegeben wird, gilt die Voreinstellung von 24 Stunden.
$filterCat
Kann auf ” belassen werden. Die Variable kann benutzt werden Meldungen mit einem hier bestimmten String herauszufiltern. z.B. um Feeds mit vielen Meldungen auf ein Thema zu reduzieren, wenn keine Unter-Kategorien angeboten werden.
$tLimit
Maximale Länge der Meldungstitel. (Längere Titel werden auf die angegebene Buchstabenzahl gekürzt) Um nichts abzuschneiden wird der Wert auf -1 gesetzt.
$dLimit
Maximale Länge der Einzelheiten. (Längere Meldungstexte werden auf die angegebene Buchstabenzahl gekürzt) Um nichts abzuschneiden wird der Wert auf -1 gesetzt.
$noHTML
entfernt HTML-Tags aus den Beschreibungen um die Sicherheit zu verbessern. Die Voreinstellung ist “true”. Um die Meldungen ungeändert anzuzeigen, ist der Wert auf “false” zu ändern.
$showTime
Schaltet die Anzeige von Zeitangaben aus den Feeds ein. Die unformatierten Angaben werden nach dem Titel und den Einzelheiten angehängt. Die Voreinstellung ist false == off.
$likeWPPosts
Versucht die Nachrichten ähnlich den Beiträgen in WordPress auszugeben. Dies ist geeignet um Nachrichten im Fliesstext anzuzeigen. Für Listen oder seitlichen Spalten weniger geeignet. Die Voreinstellung ist false == off.
Auf die Seite kommen die Nachrichten mit folgendem Code:
<?php
$feedUrl = "http://newscontent.de/websozis.xml"; // enter your feed's url here
$feedOut = parseURL($feedUrl, 4, true, 'ws', '', -1 ); // enter a cache name
if (!empty($feedOut))
{
start_block("News powered by", "feedread", "div");
echo $feedOut;
end_block();
}
?>
Durch das start_block("News powered by", "feedread", "div"); kommt ein <div id="feedread"> um den Newsfeed. Dadurch kann die CSS-Formatierung genau angepasst werden. Vor die Feed-Bezeichnung kommt dann noch ein “News powered by”. Damit wäre die Anzeige der 4 neuesten WebSozi-Nachrichten mit Anrisstext fertig, wenn ich nicht den Validator auf die Seite losgelassen hätte.
Validierung
Dieser meckert in der Grundeinstellung eine ungültige Versachtelung von Block- und Inline-Elementen an. Um dies valide zu bekommen, ist eine Änderung des Quellcodes notwendig. Um die Zeile 312 von wp-content/plgins/cg-plugins/phpread.php herum ersetzte ich
if ($likeWPPosts)
$output .= "</h3>".$lf; /* close each item */
else
$output .= "</div></li>".$lf; /* close each item */
if ($showDetails)
{
if ($likeWPPosts)
$output .= "<div class='storycontent'>$itemDescription</div>".$lf;
else
$output .= "<p class='feedItemDescription'>$itemDescription</p>".$lf;
}
durch
if ($likeWPPosts)
$output .= "</h3>".$lf; /* close each item */
else
$output .= "</span><br />".$lf; /* close each item */
if ($showDetails)
{
if ($likeWPPosts)
$output .= "<div class='storycontent'>$itemDescription</div>".$lf;
else
$output .= "<spanclass='feedItemDescription'>$itemDescription</span>".$lf."</li>".$lf;
}
else $output .= "</li>".$lf;
Durch die Änderung bleibt das HTML auch bei ausgeschaltetem Anrisstext valide.
13. Oktober 2005 um 01:06 Uhr
[...] Nach der Erläuterung was RSS ist hiermal noch eine kleine Anleitung wie man RSS in seinen Weblog einbindet. Beispielsweise könnte man sich mit icio bookmarks von anderen in seinen webblog importieren. Thomas Vogt | Weblog aus Illerkirchberg » News-Anzeige einbauen 20.10.2004 News-Anzeige einbauen Abgelegt unter: xHTML und Co., WordPress â�� Thomas Vogt schrieb mittags [...]