RDF Reader

Gesperrt
DonBender
Beiträge: 24
Registriert: Mi 13. Apr 2005, 03:35
Kontaktdaten:

RDF Reader

Beitrag von DonBender »

Hallo liebe Leute!

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";
}
}
?>
Vielleicht kann man ja hier noch was verbessern.
Jedenfalls funktioniert er bei mir.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

gibts ein beispiel wo man das sehen kann ? (link ?)
*** make your own tools (wishlist :: thx)
DonBender
Beiträge: 24
Registriert: Mi 13. Apr 2005, 03:35
Kontaktdaten:

Beitrag von DonBender »

gibt es unter www.igbce-jugend-nordost.de zu sehen
kashban
Beiträge: 44
Registriert: Fr 7. Mai 2004, 10:29
Kontaktdaten:

Beitrag von kashban »

Nicht schlecht. Ich brauche zwar eine Version ohne MARQUEE, aber das lässt sich ja leicht ändern. Noch besser wäre es, wenn man den Scroller konfigurieren könnte. Ich werd das mal entsprechend anpassen....
Gesperrt