PHP Skript zum Erstellen eines Newstickers

Newsticker
Lesedauer: 2 Minuten

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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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>
<?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>
<?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>
Wie hat Dir der Beitrag gefallen?
Bewertung: 0/5 - abgegebene Bewertungen: 0

1 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