amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

[Login] [Registrieren] [Passwort vergessen?]

< Nächste MeldungVorige Meldung >
09.Jul.2001



amiga-news.de Headlines auf Ihrer Website
Im Rahmen eines PHP-Kurses hat sich das Amiga-Magazin kürzlich mit der Möglichkeit beschäftigt, unsere News über ein Backend auf die eigene PHP-Website einzubinden. Da das Skript inzwischen ausgiebig getestet ist, wollen wir unseren Lesern diese Möglichkeit nicht vorenthalten. Hier können Sie sich ein Beispiel des Ergebnisses anschauen.

Wichtig: Die voreingestellte Zeit von sechs Stunden darf nicht reduziert werden; Abrufe mit kürzeren Intervallen ziehen eine IP-Sperre nach sich!

Im folgenden Amiga-Magazin-Artikel lesen Sie, wie Sie diesen Service auf Ihrer Website einbinden können:

Frische News mit PHP

Einige News-Seiten wie amiga-news.de bieten eine Backend-Service für aktuelle Nachrichten. Dazu stellen die Betreiber eine spezielle Datei auf dem Server bereit, die z.B. die letzten zehn Headlines zur Verfügung stellt. Diese Daten kann man mit Hilfe von PHP auf der eigenen Startseite einbinden und so immer frische News auf der eigenen Seite bereit stellen.

In Listing 3 sehen Sie eine Lösung in PHP. Dieses Skript-Schnipsel können Sie in das eigene Dokument einfügen und bei jedem Aufruf werden die aktuellen Headlines von amiga-news.de auf Ihrer Seite gezeigt. Das PHP-Skript zieht die Datendatei und konvertiert das Ganze in HTML-Code. Dieser wird in eine temporäre Datei geschrieben und dann in die Seite eingebunden.

Dabei testet das Skript vor dem Transfer wie alt die lokal vorliegenden Daten sind. Haben sie ein bestimmtes Alter erreicht, wird von amiga-news.de das Headline-Files gelesen und die Liste neu erzeugt. Anschließend überschreibt das Skript die lokalen Daten.

Im ersten Teil werden einige Variablen festgelegt. Dabei wird die Server-Adresse angegeben, der Port, über den das Skript die Daten von amiga-news.de transferiert, und die Datei in der die Daten geschrieben werden. Die folgenden Variablen legen einige Werte für Zeit und Datum fest. Im Beispiel folgt eine Liste mit Monatsnamen, die später für die Erzeugung des HTML-Textes gebraucht werden.

Nun beginnt das eigentliche Programm. Das Skript bezieht die Headline alle sechs Stunden von amiga-news.de. Ein kürzerer Zeitraum sollte man aus Performance-Gründen nicht wählen. Sonst werden zu oft Daten vom Server gezogen, was den Datentransfer unnötig erhöht. Sind die Daten zu alt, öffnet das Skript eine Verbindung über Port 80 (HTTP) zu amiga-news.de, transferiert die Daten und erzeugt daraus die HTML-Daten. Falls keine Verbindung mit amiga-news.de aufgebaut werden kann, wird eine entsprechende Fehlermeldung ausgegeben.

Das Skript liest nun Zeile für Zeile die Daten ein -- das Format der Headlines von amiga.news.de finden Sie in Listing 4. Wenn das Skript auf den String %% (Start einer Meldung) trifft, beginnt es mit der Auswertung der Daten. Die erste Zeile in der Headline ist der Titel -- er wird in die entsprechende Variable ($headline) eingelesen. Dann folgt der Link zur Meldung -- der wandert nach $headlink. Anschließend folgt noch das Datum und die Zeit.

In unserem Fall interessiert uns nur das Datum. Deswegen wird mit der strtok-Anweisung der hintere Teil der Daten einfach abgeschnitten. Der Space zwischen Datum und Zeit ist bei dieser Operation das Trennzeichen.

Im Beispiel wollen wir immer die News eines Tages zusammenfassen und davor das Datum setzen. Deswegen testet das Programm das Datum -- ist es leer, wird es zum aktuellen Datum. Mit explode wird Jahr, Monat und Tag in einzelne Strings zerlegt (Trennzeichnen ist ein Bindestrich -- s. Listing 4). Dann wird der String für die Ausgabe des aktuellen Datums zusammengesetzt. Es wird ein Non-breakable Space an den Anfang gesetzt, damit das Datum ein wenig eingerückt wird, und das Tag für den Fettdruck (<B>) integriert wird.

Dann folgt der Tag, der Monat und die Jahreszahl. In diesem Schritt werden auch die vordefinierten Monatsnamen (s. Anfang des Listings) eingefügt. Am Ende muss noch </B> stehen, damit der Bold-Modus (Fettdruck) deaktiviert wird.

Mit der folgenden if-Anweisung testet das Programm, ob das letzte gelesene Datum ($current_date) größer ist, als das gerade bezogene ($akdate). Ist das der Fall, muss wieder eine Datums-Zeile für HTML erzeugt werden, denn die nächste Meldung stammt vom Vortag. Bei dieser Abfrage wird der Vorteil der automatischen Typenumwandlungen in PHP genutzt. Beim Vergleich mit »größer« interpretiert PHP den String als Zahl. Ist $current_date nicht größer als $akdate, dann wird $ak_date einfach ein Leerstring zugewiesen.

Hinweis: Die Variable $akdate hat im Skript zwei Funktionen - sie dient als Speicher für das von amiga-news.de bezogene Datum und wird später für die Datums-Zeile im HTML-Code benutzt.

Ist die Datumszeile ermittelt, wird der HTML-Code für die Headline mit Link erzeugt. Am Anfang wird noch das Datum eingefügt. Ist die Headline vom selben Tag wie in der Zeile zuvor, dann wurde beim Datumvergleich im oberen Teil dieser String auf »leer« gesetzt -- es wird kein Datum eingefügt. Im Anschluss schreibt das Programm die erzeugte HTML-Zeile in die lokale News-Datei. Das geht so lange, bis alle Zeilen vom Headline-File gelesen wurden. Das lokale Datenfile wird anschließend geschlossen und dann die Verbindung zum Server von amiga-news.de beendet.

Im letzten Teil des Scripts wird dann die lokale News-Datei (die schon HTML-Code enthält) in die Webseite eingefügt. Der Server gibt diesen Teil dann an den Client weiter.

Die vorgestellte Lösung kann man im Prinzip schon in die eigene Webseite einbinden. Sie enthält aber fast keine Formatierung des Textes. Beim Zusammensetzen des Strings für das Datum wird im Beispiel der Text fett gesetzt -- an dieser Stelle können Sie aber auch die Schriftgröße ändern (font-Tag). Sie können auch eine Tabelle bauen, und die restlichen Daten (Zeit, Rubrik, bearbeitende Person) mit in die Liste einfügen.

Mit freundlicher Genehmigung von
© 2001 Amiga Magazin, WEKA Computerzeitschriften GmbH
(ps)

[Meldung: 09. Jul. 2001, 20:28] [Kommentare: 7 - 11. Jul. 2001, 06:09]
[Per E-Mail versenden]  [Druck-Version]  [ASCII-Version]
< Nächste MeldungVorige Meldung >

.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.