Newsticker

PHP Skript zum Erstellen eines Newstickers

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

Beispiel für die Anzeige des Newstickers
Beispiel für die Anzeige des Newstickers

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>

Ein Gedanke zu „PHP Skript zum Erstellen eines Newstickers

  1. Pingback: Newsticker in VIS | Kreyenborg.koeln

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.