getreidemuehlen
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 23.07.2007, 18:55   #1
TP-Moderator
 
Benutzerbild von His.Master's.Voice
 
Registriert seit: Mar 2006
His.Master's.Voice ist ein richtiges Arbeitstier - DANKEHis.Master's.Voice ist ein richtiges Arbeitstier - DANKEHis.Master's.Voice ist ein richtiges Arbeitstier - DANKEHis.Master's.Voice ist ein richtiges Arbeitstier - DANKEHis.Master's.Voice ist ein richtiges Arbeitstier - DANKEHis.Master's.Voice ist ein richtiges Arbeitstier - DANKE

[Tutorial] RSS-Feed in eigene Website einbinden


Viele Webseitenbetreiber bieten einen sog. RSS-Feed als Infokanal, den man mit seinem Browser abonnieren kann. Diese Schlagzeilen oder Info's kann man jedoch auch auf seine eigene Website einbinden um seinen Besuchern einen zusätzlichen Service anzubieten.

Was brauche ich?
1. Einen RSS-Parser, der die Daten ausliesst und vorab aufbereitet. Zum Beispiel: http://magpierss.sourceforge.net
2. PHP ab der Version 4.2 auf dem eigenen Webspace
3. Einen RSS-Feed den man einbinden möchte. Diese sind häufig nach dem Muster http:// www.einedomain.de/feedname.xml aufgebaut.

Wie komme ich an solch einen RSS-Feed?
Einfach mal in folgenden Verzeichnissen nach einem News-Feed suchen. Diese sind nach Kategorien aufgebaut. Zum Beispiel Sport, Nachrichten, Internet usw.
www.rss-scout.de
www.rss-verzeichnis.de
www.rss-nachrichten.de
www.xmlfeeds.de
www.web-feed.de
www.all4rss.com
www.rss-katalog.com
www.feedster.com

Vorbereitung auf dem eigenem Webspace:
Habt ihr Euch den magpie Parser downgeloadet, kopiert ihr folgende Dateien in das Verseichnis wo auch die HTML-Datei liegt wo ihr den NewsFeed einbauen wollt. Bsp. soll es die Startseite (index.html) sein, kopiert die "rss_fetch.inc", "rss-parser.inc", "rss-cache.inc" und "rss-utils.inc" in das Hauptverzeichnis. Weiterhin das Verzeichnis /extlib mit der darin enthaltenen Datei Snoopy.class.inc übernehmen.
Das Script versucht automatisch noch ein Verzeichnis /cache anzulegen. Sicherheitshalber einfach dieses anlegen und die Rechte auf chmod(775) setzen.

Script in die Website einbauen:
Den folgenden php Code einfach an die Stelle der HTML-Datei setzen, wo der News-Feed erscheinen soll. Anschließend muss die Datei aber mit der Endung php abgespeichert werden (bei der Startseite wäre dies z.B. index.php)

PHP-Code:
<?php
define
('MAGPIE_CACHE_DIR''cache');
define('MAGPIE_CACHE_AGE''600');
require_once(
'rss_fetch.inc');
$url 'http://www.tagesschau.de/newsticker.rdf';

if ( 
$url ) {
$num_items 10;
$rss fetch_rss$url );
$items array_slice($rss->items0,$num_items);
echo 
$rss->channel['title'];}

echo 
"<ul id='feed'>";
foreach (
$items as $item) {
$href $item['link'];
$title $item['title'];
echo 
"<li><a href=$href target='_blank'>$title</a></li>";}
echo 
"</ul>";
?>
Im Beispielcode habe ich mir den News-Feed von der ARD - Tagesschau ausgesucht. Unter der Variablen $url müsst ihr daher die http Adresse eintragen.
Der definierte Cache dient zur Entlastung des Quellservers und die Zahl 600 ist die Zeit in Sek. wie auf neue Nachrichten abgefragt wird. Mit $num_items = 10; wird die Zahl der einzulesenden Schlagzeilen auf 10 beschränkt. Wer nur 5 möchte schreibt somit $num_items = 5;
Anschließend werden die Schlagzeilen über den normalen ul tag in Listenform auf der Website ausgegeben. Das Standard html Listenelement ist ein einfacher kleiner Kreis. Den kann man mit den üblichen css Befehlen über die id="feed" formatieren, z.B. eine kleine Grafik zuweisen.

Und wie sieht das jetzt aus?
Ich habs mal auf einer monsterhaften Seite eingebaut. Guckst du bei der Überschrift News Top10

Wichtig: Nicht jeden RSS-Feed darf man einbauen. Der Beispiel-Feed von der ARD - Tagesschau darf für nichtkommerzielle Seiten benutzt werden, jedoch mit der Auflage das keine Ansicht in Frames erfolgt. Daher target='_blank' im obigen php Code benutzt, bewirkt die Ansicht im neuen Browserfenster. Weiterhin muss die Quelle benannt wierden. Falls derartige Hinweise nicht auf der jeweiligen Anbieterseite vorhanden sind im Zweifelsfall per netter E-Mail nachfragen.

Viel Spaß beim Nachbauen...!
__________________


Geändert von His.Master's.Voice (23.07.2007 um 19:05 Uhr).
His.Master's.Voice ist offline   Mit Zitat antworten
Linktipp

Alt 23.07.2007, 22:54   #2
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Sehr schön !

Ich habe noch ein rudimentäres Beispiel. Der Parser ist ein einfacher xml-Parser, das Array muss sozusagen "händisch" ausgelesen werden.
Als Beispiel hab ich mal den Spiegelfeed ausgegeben

PHP-Code:
<?php
#Feed in string einlesen
$news file_get_contents('http://www.spiegel.de/schlagzeilen/rss/0,5291,,00.xml');

$content='<h1>Spiegel Newsfeed</h1>';
#Feed parsen 
$p =& new xmlParser();
$p->parse($news);
#Referenzobjekt mit den items
$items =& $p->output[0]['child'][0]['child'];

#wer sich das array anschauen möchte                                             
#echo '<pre>'.print_r($items,true).'</pre>'; 

#die ersten 10 Ergebnisse ausgeben
for($i=5;$i<15;$i++) {
    
$content.='<div class="item_link">
    <a href="'
.$items[$i]['child'][1]['content'].'" target="_blank">'.
    
utf8_decode($items[$i]['child'][0]['content']).
    
'</a></div>';
}
#und ausgeben
echo $content;

#der parser
class xmlParser{

   var 
$xml_obj null;
   var 
$output = array();

   function 
xmlParser(){

       
$this->xml_obj xml_parser_create();
       
xml_set_object($this->xml_obj,$this);
       
xml_set_character_data_handler($this->xml_obj'dataHandler');
       
xml_set_element_handler($this->xml_obj"startHandler""endHandler");

   }

   function 
parse($inp){

       
       if (!
xml_parse($this->xml_obj,$inp)) {
           die(
sprintf("XML error: %s at line %d",
           
xml_error_string(xml_get_error_code($this->xml_obj)),
           
xml_get_current_line_number($this->xml_obj)));
           
xml_parser_free($this->xml_obj);
       }
      

       return 
true;
   }

   function 
startHandler($parser$name$attribs){
       
$_content = array('name' => $name);
       if(!empty(
$attribs))
         
$_content['attrs'] = $attribs;
       
array_push($this->output$_content);
   }

   function 
dataHandler($parser$data){
       if(!empty(
$data)) {
           
$_output_idx count($this->output) - 1;
           
$this->output[$_output_idx]['content'] .= $data;
       }
   }

   function 
endHandler($parser$name){
       if(
count($this->output) > 1) {
           
$_data array_pop($this->output);
           
$_output_idx count($this->output) - 1;
           
$this->output[$_output_idx]['child'][] = $_data;
       }
   }

?>
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 27.07.2007, 00:02   #3
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Klasse Tutorial, Feeds sind immer gut

__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
chmod( 'internal.php', 0444 );
Rizzo ist offline   Mit Zitat antworten
Alt 27.07.2007, 07:49   #4
TP-Moderator
 
Benutzerbild von Mich@el
 
Registriert seit: Oct 2005
Ort: Würzburg
Mich@el lebt für das TP und seine UserMich@el lebt für das TP und seine UserMich@el lebt für das TP und seine UserMich@el lebt für das TP und seine UserMich@el lebt für das TP und seine UserMich@el lebt für das TP und seine UserMich@el lebt für das TP und seine User
Auch wenn´s ein wenig länger gedauert hat... dem schließe ich mich definitiv an! Ne Menge Arbeit, die ganz bestimmt nicht umsonst war/ist.

Grüße
Michael
__________________
Back to business!
Mich@el ist offline   Mit Zitat antworten
Alt 11.11.2007, 23:58   #5
TP-Newbie
 
Registriert seit: Sep 2003
Ort: MUC
lala macht alles soweit korrekt
suche schon länger ne lösung

hier mein feed

bei dem mir die titel als links angezeigt werden
bei ner auswahl werden sie in der news.php alle nacheinander gelistet angezeigt

--> ich möchte aber nur eine news oder genau die angewälte news direkt in der liste anzeigen

nicht immer die ganze liste mit den zur verfügung stehenden news ganz von oben angezeigt - so wenn man die letzte news anklickt sieht man erst die erste und muss dann bis zur letzten scrollen

weiß jemand nen rat?


<?php
require_once('magpierss-0.72/rss_fetch.inc');
$url = 'http://www.newsfeedwebsite.de/news/NewsFeed.php';
$rss = fetch_rss($url);
foreach ($rss->items as $item) {
$title = $item[title];
$link = 'http://www.meinewebsite.de/news.php class="news"';
$desc = $item[description];
if($i < 10) {
echo "<a href=$link>$title</a><br>\n";
$i++;
}
}
?>
lala ist offline   Mit Zitat antworten
Alt 13.11.2007, 22:13   #6
TP-Newbie
 
Registriert seit: Sep 2003
Ort: MUC
lala macht alles soweit korrekt
weiß keiner nen rat ?
lala ist offline   Mit Zitat antworten
Alt 14.11.2007, 05:45   #7
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Du musst natürlich für jede News statt der Übersicht-URL auch die individuelle URL angeben. Soll heissen, statt z.B. news.php gibst Du für jede News die entsprechende ID mit an, z.B. news.php?id=18
Dann wertest Du beim Aufruf aus welche ID angefordert wurde, lädst die zugehörige News aus der DB und schickst sie an den Browser.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
chmod( 'internal.php', 0444 );
Rizzo ist offline   Mit Zitat antworten
Alt 14.11.2007, 20:28   #8
TP-Newbie
 
Registriert seit: Sep 2003
Ort: MUC
lala macht alles soweit korrekt
danke Dir aber das versteh ich so nicht ganz wie ich die links einzeln verlinken soll?

durch das script unten werden 10 titel ausgegeben
diese sind dann auf die news.php verlinkt
-> wie verlinkt man aber links einzelln auf eigene seiten?
lala ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Workshops und Tutorials
[Tutorial] RSS-Feed in eigene Website einbinden [Tutorial] RSS-Feed in eigene Website einbinden
« [Tutorial] Formulare verarbeiten mit PHP/MySQL (Teil 2 - Array Funktionen) | [Workshop] Typo3-Workshop Teil III - Das Template »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:03 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 RC7 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67