Da bei mir der RDF/RSS-Reader von x28.de nicht so funktioniert, wie er soll, hab ich mir gestern einen anderen mit eingebunden. Ich konnte nämlich nicht die RSS-Feeds von N24 einlesen, weil diese ein RDF-Format haben.
Code: Alles auswählen
Modul-Input:
echo "<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\" class=\"text_medium\">
<tr>
<td>RDF URL:</td>
<td colspan=2> <INPUT TYPE=\"text\" NAME=\"CMS_VAR[0]\" VALUE=\"CMS_VALUE[0]\" style=\"width: 300px;\"></td>
<td width=\"20\"> </td>
</tr>
<tr>
<td>Refreshtime:</td>
<td><INPUT TYPE=\"text\" NAME=\"CMS_VAR[1]\" VALUE=\"CMS_VALUE[1]\" style=\"width: 30px;\"> Minuten</td>
<td width=\"20\"> </td>
</tr>
<tr>
<td>Quelle:</td>
<td><INPUT TYPE=\"text\" NAME=\"CMS_VAR[2]\" VALUE=\"CMS_VALUE[2]\" style=\"width: 120px;\"></td>
<td width=\"20\"> </td>
</tr>
</table>";
Code: Alles auswählen
Modul-Output:
<?php
include($cfg['path']['contenido'].'external/rdf/rdf-news.php');
$in_file = "CMS_VALUE[0]";
$refresh = "CMS_VALUE[1]";
$rdfQuelle = "CMS_VALUE[2]";
$rdf = new rdf();
echo'
<div id="rdf" style="position:relative; left:0px; top:0px; width:160px; height:160px; z-index:1; overflow:hidden; visibility: visible;">';
$rdf->display($in_file, $refresh);
echo '</id><br>
<adress style="font-family:Tahoma; font-style:italic; font-size:10px; color: #1C5679;">Quelle: '.$rdfQuelle.'</adress>';
?>
Code: Alles auswählen
rdf-news.php
Diese Datei packt ihr in das Verzeichtnis Contenido/external/rdf/
<?php
class rdf {
var $rdf_in_file = "www.f-r.de/rss/letzte_meldungen.xml/index.xml";
var $rdf_refresh = 15;
function display($in_file, $refresh){
if (!isset($in_file)) {$in_file = $this->rdf_in_file; }
if (!isset($refresh)) {$refresh = $this->rdf_refresh; }
// Fehlermeldung unterdrücken
error_reporting(0);
// Cachenötigkeit ermitteln und ausführen wenn nötig :-)
$cachedir = "cache";
$timestamp = time();
$cache_age = 0;
if (!is_dir($cachedir)) mkdir($cachedir, 0755);
$in_file_url = parse_url ($in_file);
unset ($in_file_url['scheme'], $in_file_url['port'], $in_file_url['user'], $in_file_url['pass']);
$cachefile = "";
foreach ($in_file_url as $in_file_piece){
$cachefile .= str_replace(array(".", "/", "=", "&"), "_", $in_file_piece);
}
$cachefile .= ".rdf";
$cachefile = $cachedir . "/" . $cachefile;
if (is_file($cachefile)){ //existiert die Cache-Datei?
$cache_date = filemtime($cachefile); // TimeStamp vom File
$cache_age = sprintf("%u", ($timestamp - $cache_date) / 60);
$cache_date = date("d.m.Y / H:i:s", $cache_date); // TimeStamp in Datums-String umwandeln
if ($cache_age >= $refresh){ // ist sie älter als gewünscht?
$use_cache = false;
$warn_open = "<font color=\"red\">";
$warn_close = "</font>";
} else {
$use_cache = true; // wenn nicht zu alt dann Cachefile lesen
$warn_open = $warn_close = "";
}
} else {
$use_cache = false; // Cache-Datei existiert nicht
}
if (!$use_cache){
$in_file = file($in_file);
if ($in_file){ // wenn Remote-Datei nicht lesbar dann doch Cache versuchen.
$fhd = fopen($cachefile, 'w'); // Datei neu (CacheFile) schreiben wenn sie lesbar war.
foreach ($in_file as $lineout){
fputs($fhd, $lineout);
}
fclose ($fhd);
clearstatcache(); // Datei-Status-Cache löschen
$cache_date = filemtime($cachefile); // TimeStamp vom File
$cache_age = sprintf("%u", ($timestamp - $cache_date) / 60);
$cache_date = date("d.m.Y / H:i:s", $cache_date); // TimeStamp in Datums-String umwandeln
$warn_open = $warn_close = "";
}
}
// XML-Parsing
$in_file = file($cachefile) or die ("<h3><font color=\"red\">Cache-Datei konnte nicht gelesen werden!</font></h3>");
$in_file = implode("", $in_file); // Datei komplett in eine Variable einlesen
$xml_parse = xml_parser_create();
xml_parse_into_struct($xml_parse, $in_file, $values, $tags);
xml_parser_free($xml_parse);
// Ausgabe
echo '<MARQUEE onmouseover=this.stop() onmouseout=this.start() scrollAmount="1" scrolldelay="60" direction="up" width="160" height="160">';
echo '<div id="newsblock"><ul>';
foreach($tags as $key => $tag){
if ($key == "CHANNEL"){
for ($i=$tag[0]; $i <= $tag[count($tag)-1];$i++){
if ($values[$i]['tag']=="TITLE" && $values[$i]['level']==3) $title = $values[$i]['value'];
if ($values[$i]['tag']=="LINK" && $values[$i]['level']==3) $news_link = $values[$i]['value'];
if ($values[$i]['tag']=="DESCRIPTION" && $values[$i]['level']==3) $description = $values[$i]['value'];
/*
if ($values[$i]['tag']=="CHANNEL" && $values[$i]['type']=="close"){
echo "<h2>".$title.", <font size=\"-3\">".
" <font size=\"-1\">$description<br>\n";
echo "${warn_open}vom $cache_date, seit $cache_age Minute(n)$warn_close / Refresh alle $refresh Minuten</font></h2>\n";
}
*/
}
}
if ($key == "ITEM"){
for ($i = $tag[0];$i <= $tag[count($tag)-1];$i++){
if ($values[$i]['tag']=="TITLE" && $values[$i]['type']=="complete") $title = $values[$i]['value'];
if ($values[$i]['tag']=="LINK" && $values[$i]['type']=="complete") $link = $values[$i]['value'];
if ($values[$i]['tag']=="DESCRIPTION" && $values[$i]['type']=="complete") $description = $values[$i]['value'];
if ($values[$i]['tag']=="ITEM" && $values[$i]['type']=="close"){
// Wenn description gesetzt dann ausgeben.
if (isset ($description)) {
echo "<li><a href=\"".$link."\" target=\"_blank\"><b>".$title."</b><br>".$description;
} else {
echo "<li><a href=\"".$link."\" target=\"_blank\">".$title;
}
echo "</a></li>\n";
}
}
}
unset($title);
unset($link);
unset($description);
}
echo '</ul>';
echo '</MARQUEE>';
// echo "<a href=\"".$news_link."\" target=\"_blank\">mehr...</a>\n";
}
}
?>
Jedenfalls funktioniert er bei mir.