Einen RSS-Parser für bestimmte Beiträge schreiben

Für die User, die sich einfach nicht von WordPress überzeugen lassen, bleibt nur die Möglichkeit alles per Hand zu machen. Aber auch für WordPress-user könnte diese Anleitung intressant sein:
Heute zeige ich euch wie ihr mehrere Parserseiten machen könnt, in denen ja nach Kategorie, nur bestimmte Beiträge gezeigt werden.
Used:

  • PHP
  • XML


Zuerst gehen wir auf den Inhalt eines Beispielbeitrags ein:

1
2
3
4
5
6
7
<item>
<title>Ein Tag zum Coden</title>
<description>Heute habe ich diesen RSS-Feed erstellt. Dank Renzio lerne ich morgen, eine Kategorieneinteilung mit PHP zu machen!</description>
<link>http://max-mustermann.de/feed/ein-tag-zum-coden</link>
<category>homepage</category>
<pubDate>Fri, 08 Oct 2010 14:23:00 +0200</pubDate>
</item>

<title> <description> <link> und <pubdate> sollten in ihrer Verwendung klar sein!
Für uns ist nur <category> wichtig!
Dort tragen wir die Kategorie unseres Beitrages ein.
Wir unterscheiden hier in 2 Kategorien, die auch entsprechende Seiten bekommen:

  • Homepage – Die Kategorie für Homepageupdates
  • Privat – Unser Privater Blog

Der User unserer Seite sieht in der Navigation dann auch entsprechende Navigations-Elemente!
Fangen wir mit dem Parser für die Homepageupdates an:

1
2
3
4
5
6
7
<?php
$feed=simplexml_load_file('feed/rss.xml'); //feed/rss.xml ist die Datei des FEED
/* item */
$item=$feed->channel->item[0];
echo $item->title; ?>
<hr><span style="color:#111111;"><?php echo $itemdate; ?></span><hr>
<span style="font-size:12px;"><?php echo $item->description; ?></span>

Sieht doch schon ganz gut aus! Allerdings würde unser Parser einfach den neuesten Beitrag nehmen und anzeigen! Jetzt kommt der Clou:
statt item[0] zu nehmen machen wir uns jetzt eine Variable $i = 0;
Dann laden wir immer das $item[$i]! Anschließend überprüfen wir ob die Kategorie richtig ist!

1
2
3
4
5
If ($item->category == "Homepage") {
break 2;}
else {
$i ++
}

Das ganze Packen wir in eine Endlosschleife! Nach dieser Endlosschleife ist in $i das richtige Item gespeichert und wir können es ausgeben!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$feed=simplexml_load_file('feed/rss.xml'); //feed/rss.xml ist die Datei des FEED
$i = 0;
while (1=1):
$item=$feed->channel->item[$i];
If ($item->category == "Homepage") {
break 2;}
else {
$i ++
}
endwhile;
$item=$feed->channel->item[$i];
echo $item->title; ?>
<hr>
<span style="font-size:12px;"><?php
echo $item->description;
?></span>

Das Problem bei der ganzen Sache: Je länger der letzte Beitrag in der Kategorie her ist, desto länger wird auch die Ladezeit!
Also haltet eure Homepage immer aktuell ;)

Natürlich kann man das ganze mit so vielen Kategorien machen wie man will, mit der Berücksichtigung der Ladezeit!
Der Parser für die Kategorie “Privat” sieht dann so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$feed=simplexml_load_file('feed/rss.xml'); //feed/rss.xml ist die Datei des FEED
$i = 0;
while (1=1):
$item=$feed->channel->item[$i];
If ($item->category == "Privat") {
break 2;}
else {
$i ++
}
endwhile;
$item=$feed->channel->item[$i];
echo $item->title; ?>
<hr>
<span style="font-size:12px;"><?php
echo $item->description;
?></span>

2 Kommentare zu “Einen RSS-Parser für bestimmte Beiträge schreiben”

  1. avatar Renzio sagt:

    *hust*
    Hallo? Soweit ich weiß war das einer meiner Beiträge!
    Und wo ist mein Account hin?

Kommentar schreiben

RSS Feed Auf Twitter folgen!