Da ich selbst auf der Suche nach einem solchen Newsticker war und noch nichts adäquates gefunden habe, habe ich kurzerhand ein Skript erstellt, welches dies erledigt.
Vorraussetzung hierfür: Webserver mit PHP
Im Fehlerfall: Es kann sein, dass das JavaScript durch den lokalen Aufruf geblockt wird.
Das Skript benötigt auf dem Server Ausführ- und Schreibrechte, damit die RDF-Datei heruntergeladen und verarbeitet werden kann. Dies geschieht bei jedem Aufruf und dauert weniger als 1 Sekunde 🙂
Die Seite kann bequem über ein <iframe>-Tag eingebunden werden.
Newsticker Skript
Die Adresse der Datei der News-Datei kann in Zeile 3 geändert werden.
Die Farben kannst Du per CSS anpassen:
- Zeile 73: Hintergrundfarbe
- Zeile 74: Textgröße
- Zeile 82: Textfarbe
Die Anzahl der News, die aus der Datei gelesen werden sollen, können in Zeile 40 angepasst werden.
<?php //URL der Datei, die geladen/geparsed werden soll $newsfile = "http://www.tagesschau.de/newsticker.rdf"; // Funktion, um News rdf Datei abzuholen function get_file($file, $local_path, $newfilename) { $err_msg = ''; //echo "<br>Attempting message download for $file<br>"; $out = fopen($local_path.$newfilename,"wb"); if ($out == FALSE){ print "File not opened<br>"; exit; } $ch = curl_init(); curl_setopt($ch, CURLOPT_FILE, $out); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_URL, $file); curl_exec($ch); //echo "<br>Error is : ".curl_error ( $ch); curl_close($ch); } //Funktionsaufruf um die Datei abzuholen get_file($newsfile,'./','newsticker.rdf'); // Feed einlesen if( !$xml = simplexml_load_file('newsticker.rdf') ) { die('Fehler beim Einlesen der XML Datei!'); } // Ausgabe Array $out = array(); // auszulesende Datensaetze $i = 7; // Items vorhanden? if( !isset($xml->channel[0]->item) ) { die('Keine Items vorhanden!'); } // Items holen foreach($xml->channel[0]->item as $item) { if( $i-- == 0 ) { break; } $out[]=(string) $item->title; } //print_r($out); // Eintraege ausgeben $news = ""; foreach ($out as $value) { $news .= " ++++ ".$value; } ?> <!DOCTYPE html> <html lang="de"> <head> <meta charset="utf-8"> <title>SKB Web - NewsParser</title> <style> .marquee { max-width: 100vw; /* iOS braucht das */ white-space: nowrap; overflow: hidden; /* Hintergrundfarbe des Lauftextes. Auskommentieren, um Transparent zu erhalten */ background-color: #000000; font-size:20px; } .marquee span { display: inline-block; padding-left: 100%; animation: marquee 10s linear infinite; /* Textfarbe des Lauftextes */ color: #FFFFFF; } /* Optional: mouseover (oder Tipp auf dem Touchscreen) pausiert die Laufschrift */ .marquee span:hover { animation-play-state: paused } /* Make it move */ @keyframes marquee { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } } </style> </head> <body> <div id="marquee" class="marquee"><span><?php echo $news; ?></span></div> <script> if (document.getElementById("marquee")) { var laufschrift = document.getElementById("marquee"); len = laufschrift.innerHTML.length; laufschrift.firstChild.style.animationDuration = len/6 +"s"; } </script> </body> </html>
Pingback: Newsticker in VIS | Kreyenborg.koeln