RDF-Parser - Wie einbinden.

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Der .xml oder der .php Datei?
Kiss News
Mitglied
Beiträge: 1640
Registriert: 31.05.2004 02:04
Wohnort: Österreich
Kontaktdaten:

Beitrag von Kiss News »

der php Datei. xml-Datei habe ich keine. Ich habe nur die rdf_parser.php und die simple_newsTagesschau.php
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Die Fehlermeldung mecker ja aber über die .xml Datei - da bringt das chmod setzen der .php Datei nix
Pyramide hat geschrieben:ggf. zuerst eine leere Datei mit dem Namen erstellen
Kiss News
Mitglied
Beiträge: 1640
Registriert: 31.05.2004 02:04
Wohnort: Österreich
Kontaktdaten:

Beitrag von Kiss News »

gut, habe also jetzt eine leere simple_news.cache.xml Datei erstellt, wo nichts drinnen steht, raufgeladen ins root-Verzeuchnis, alle Rechte vergeben..

wenn ich jetzt die Datei aufrufe:
http://web148.silverline-s13.de/phpbb2/ ... sschau.php

kommt nix... (außer Header & foother), nocht einmal ein error, sonst aber auch nix...
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Mein Lehrer hat damals immer gesagt "das Schwarze ist die Schrift" - bei mir werden da die News angezeigt...
Kiss News
Mitglied
Beiträge: 1640
Registriert: 31.05.2004 02:04
Wohnort: Österreich
Kontaktdaten:

Beitrag von Kiss News »

tatsächlich, jetzt funtzt es, habe mehrmals vorher probiert, da kam nix!!??

OK, na dann danke ich für Deine Hilfe! :P
Benutzeravatar
lukie
Mitglied
Beiträge: 3
Registriert: 17.11.2005 23:34

Beitrag von lukie »

Hallo!

Leider habe ich Schwierigkeiten. Ich habe folgenden code in die "phpinclude"-Template des WBBs geschrieben.

Code: Alles auswählen

$rdftime=0;
$rdfurl="http://www.heise.de/newsticker/heise.rdf";
include('rdf_parser.php');
show_rdf($rdfurl, 'news_item', 'simple_news.cache.xml', ($rdftime*60));
Die Template-Flags/Variablen "{news.ITEM}" liegen in der "header"-Template.
Es tritt dann ein Fehler auf:
"Call to a member function on a non-object in rdf_parser.php on line 68" der sich auf folgende Zeile bezieht:

Code: Alles auswählen

$template->assign_block_vars($block_name, array(
'TITLE' => $item['title']));
Das ist seltsam, dann ich dachte die in "rdf_parser.php" als "global" definierte "$template"-Klasse/Objekt wäre Teil vom WBB-Board.

Da ich leider wenig Wissen (über die Zusammenhänge von) PHP und WBB habe, und eine Suche in diesem Forum keine Lösung bescherte, wede ich mich an euch. Eine Idee?

Gruß und TIA
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

lukie hat geschrieben:Ich habe folgenden code in die "phpinclude"-Template des WBBs geschrieben.
Da du hier auf phpBB.de bist, ist das Script selbstverständlich zum Einbau in ein phpBB gedacht...
KB:knigge
Benutzeravatar
lukie
Mitglied
Beiträge: 3
Registriert: 17.11.2005 23:34

Beitrag von lukie »

:oops: Ich habe die Beiden wohl verwechselt. Danke für die schnelle Antwort.

<edit>

Juhu. Es ist vollbracht. [ externes Bild ]

Ich habe dazu die template_output() Funktion von rdf_parser.php modifiziert. Die einzelnen Newselemente, werden in einer einzigen globalen Stringvariable zusammengefügt, die auf das verwendete Javascript angepasst ist. Diese Stringvaraible wird dann per Platzhalter {$newstickerHtmlData} eingefügt.

Code: Alles auswählen

<?php
//das ist eine modifizierte rdf_parser.php für ein wbb board
function cache_file($url, $cachefile, $cachetime = 900) {
    $stat = @stat($cachefile);
    if ($stat[9] < (time() - $cachetime)) {
		$fp_url = fopen($url, 'r');
		$fp_cache = fopen($cachefile, 'w');
		while($str = fread($fp_url, 1024)) {
			fwrite($fp_cache, $str);
		}
		fclose($fp_url);
		fclose($fp_cache);
		return false;
	}
	else {
		return true;
	}
}

class rdf_parser {
	var $file;
	var $cache_file = '';
	var $cache_time = 0;
	var $cache_used = false;

	var $content = '';

	var $channel = array();
	var $items = array();

	function rdf_parser($file, $cache_file='', $cache_time=0) {
		$this->file = $file;
		$this->cache_file = $cache_file;
		$this->cache_time = $cache_time;
		//$this->parse();
	}

	function match($text, $elements) {
		$ret = array();
		foreach($elements as $element) {
			if(preg_match("#<$element>(.*?)</$element>#si", $text, $matches)) {
				$ret[$element] = $matches[1];
			}
		}
		return $ret;
	}

	function parse() {
		$file = $this->file;
		if($this->cache_file && $this->cache_time) {
			$this->cache_used = cache_file($this->file, $this->cache_file, $this->cache_time);
			$file = $this->cache_file;
		}
		$this->content = implode('', file($file));

		if(preg_match('#<channel>(.*?)</channel>#si', $this->content, $matches)) {
			$this->channel = $this->match($matches[1], array('title', 'description', 'link'));
		}
		preg_match_all('#<item>(.*?)</item>#si', $this->content, $matches, PREG_PATTERN_ORDER);
		foreach($matches[1] as $item) {
			$this->items[] = $this->match($item, array('title', 'description', 'link'));
		}
	}



	function template_output($maxNews) {
		$row = 0;
                  global $newstickerHtmlData;
		$newstickerHtmlData = ""; //wird an das Javascript übergeben
		$counter = 0;
			if ( $maxNews == 0 ) $maxNews = 1;
	    foreach($this->items as $item) {
			$counter = $counter + 1;
			if ( $counter > $maxNews ) break; //maximale anzahl von nachrichten im ticker
													 //theNews.addItem('heise.de: TITEL','URL','','','newsTxt1');
													 //der untere String ist angepasst an den input des javascriptes
			$newstickerHtmlData = $newstickerHtmlData."theNews.addItem('heise.de: ".$item['title']."','".$item['link']."','','','newsTxt1');\n";
	    }
         }
}

function show_rdf($url, $maxNews, $cache_file='', $cache_time=0) {
	$parser = new rdf_parser($url, $cache_file, $cache_time);
	$parser->parse();
	$parser->template_output($maxNews);
}
?>
Benutzeravatar
Maidenaustria
Mitglied
Beiträge: 187
Registriert: 01.04.2005 19:06
Wohnort: Wien
Kontaktdaten:

Beitrag von Maidenaustria »

Kiss News hat geschrieben:gut, habe also jetzt eine leere simple_news.cache.xml Datei erstellt, wo nichts drinnen steht, raufgeladen ins root-Verzeuchnis, alle Rechte vergeben..

wenn ich jetzt die Datei aufrufe:
http://web148.silverline-s13.de/phpbb2/ ... sschau.php

kommt nix... (außer Header & foother), nocht einmal ein error, sonst aber auch nix...
Öhm - bei mir passiert genau das gleiche :-?
Alle paar Minuten (beim Refresh-klick) kommt dann das:

Code: Alles auswählen

Warning: fopen(): URL file-access is disabled in the server configuration in /www/www.maidenaustria.at/bb/rdf_parser.php on line 5

Warning: fopen(http://www.ironmaiden.com/rss/index.php): failed to open stream: no suitable wrapper could be found in /www/www.maidenaustria.at/bb/rdf_parser.php on line 5

Warning: fread(): supplied argument is not a valid stream resource in /www/www.maidenaustria.at/bb/rdf_parser.php on line 7

Warning: fclose(): supplied argument is not a valid stream resource in /www/www.maidenaustria.at/bb/rdf_parser.php on line 10
Wie hast du das Problem dann gelöst?
http://www.maidenaustria.at
Die österreichische Iron Maiden Fan - Community
Antworten

Zurück zu „Coding & Technik“