Anmelden oder neues Benutzerkonto anlegen.
Doku » Beiträge extern darstellen
[bearbeiten] Wie kann ich Beiträge aus meinem WordPress Blog auf einer Seite außerhalb meines Blogs darstellen?
Oft besteht ja eine Internetpräsenz aus mehreren Bereichen. Einfachen Seiten, Blog, Galerie usw. bilden die gesamte Seite. Für bestimmte Funktionen lässt sich WordPress sehr gut nutzen. Auch lassen sich Seiten erstellen und somit lässt sich WordPress sogar als reines CMS nutzen. Wird die Seite jedoch komplexer, reicht WordPress nicht mehr aus. Falls man jedoch Inhalte aus WordPress auch außerhalb des Scriptes nutzen möchte, wird in diesem Tutorial eine Möglichkeit beschrieben. Für dieses Tutorial gehen wir mal davon aus, wir haben
- einen statischen Bereich, mit festen Seiteninhalten
- einer WordPress Installation
Alle Installationen sind erfolgt und laufen einwandfrei unter folgender Ordnerstruktur:
.. /blog/ index.php impressum.php
Auf der index.php (der Startseite beim Domainaufruf) sollen nun die die neusten News aus den verschiedenen Kategorien erscheinen. Dazu könnte man nun eine Abfrage an die Datenbank programmieren und dieses anzeigen. Dazu müsste man sich jedoch mit dem Aufbau der Datenbank auseinander setzen und evtl. geht das ganze nach einem Update oder Versionssprung nicht mehr. Besser ist es da man greift auf eine Schnittstelle zurück. z.B. auf die Feeds der Skripte und nutzt diese für eine solche Aufgabe. Der Vorteil liegt klar auf der Hand: Man braucht nur einmal etwas einzusetzen und kann es dann für alle „internen” Feeds und auch externe Feeds* benutzen.
Wir verwenden nun für diese Aufgabe Magpie RSS - PHP RSS Parser. Die hier herunter geladenen Daten werden dazu in den Unterordner magpierss gespeichert, wodurch die neue Struktur wie folgt aussieht:
.. /blog/ /magpierss/ index.php impressum.php
Nun muss die index.php editiert werden, um das Skript einzubinden und die Daten auszugeben. Als erstes muss magpierss aus dieser Seite geladen werden. Dazu muss die Datei rss_fetch.inc geladen werden.
PHP-Code:
<?php require_once 'magpierss/rss_fetch.inc'; ?>
Anschließend müssen die Feeds, die genutzt werden sollen geladen werden und notfalls etwas angepasst werden.
PHP-Code:
<?php $rss_url = 'http://yourhp.de/blog/feed/'; $my_rss = fetch_rss($rss_url); $my_rss->items = array_slice($my_rss->items, 0, 3); ?>
In der ersten Zeile sollte die Adresse deines Feeds stehen. Hier sind aus WordPress raus auch Kategorie- Feeds möglich. In der dritten Zeile wird der Feed passend zu unserer Darstellung gekürzt. Hier wird gestartet vor dem ersten Beitrag durch die 0 und inklusive des dritten durch die 3. Nun liegen die Beiträge in dem Array $my_rss und müssen nur noch dargestellt werden. Dieses geschieht am besten mit einem Durchlauf durch das Array.
PHP-Code:
<dl>
<?php
foreach ($my_rss as $item) {
$title = $item['title'];
$url = $item['link'];
$description = $item['description'];
?>
<dt><a href="<?php print"$url"; ?>"><?php print"$title"; ?></a></dt>
<dd><?php print"$description"; ?></dd>
<?php
}
?>
</dl>
Dafür werden für jeden Beitrag im Array der Titel, die Adresse und der Text genommen und als HTML ausgegeben. Der Titel dann als „Überschrift” mit Link gesetzt und anschließend die Beschreibung angezeigt.
Das Teilskript ab dem Einladen des Feeds bis zur Ausgabe kann nun beliebig oft mit verschiedenen Feeds wiederholt werden. So können verschiedene Kategorie- Feeds geladen werden werden oder das ganze ein bisschen modifiziert werden:
<?php
require_once 'magpierss/rss_fetch.inc';
$news_url = 'http://yourhp.de/blog/category/news/feed';
$news_rss = fetch_rss($news_url);
$two_news = array_slice($news_rss->items, 0, 2);
$rest_news = array_slice($news_rss->items, 2, 10);
$important_url = 'http://yourhp.de/blog/category/important/feed';
$important_rss = fetch_rss($important_url);
$important_rss->items = array_slice($important_rss->items, 0, 3);
?>
<dl>
<?php
foreach ($two_news as $item) { // zeige erste News
$title = $item['title'];
$url = $item['link'];
$description = $item['description'];
?>
<dt><a href="<?php print"$url"; ?>"><?php print"$title"; ?></a></dt>
<dd><?php print"$description"; ?></dd>
<?php
}
?>
</dl>
<hr size="1" noshade="noshade" />
<div style="float:left; position:relative; width:50%;">
<dl>
<?php
foreach ($rest_news as $item) { // Liste restliche News
$title = $item['title'];
$url = $item['link'];
$description = $item['description'];
?>
<dt><a href="<?php print"$url"; ?>"><?php print"$title"; ?></a></dt>
<?php
}
?>
</dl>
</div>
<div style="float:right; position:relative; width:50%;">
<dl>
<?php
foreach ($important_rss->items as $item) { // zeige wichtige Dinge
$title = $item['title'];
$url = $item['link'];
$description = $item['description'];
?>
<dt><a href="<?php print"$url"; ?>"><?php print"$title"; ?></a></dt>
<dd><?php print"$description"; ?></dd>
<?php
}
?>
</dl>
</div>
Viel Spass (the0bone)
- Externe Feeds unterliegen meistens Urheberrechten. Bitte vor dem Einbinden von externen Feeds prüfen, ob dieses erlaubt ist.