abonnement Unibet Coolblue Bitvavo
  maandag 5 april 2004 @ 20:33:25 #1
42782 QuietGuy
opscheppende pats-nerd
pi_18202609
De grote RSS-FAQ

Deze FAQ is opgezet om wat duidelijkheid te geven over hoe RSS werkt en wat je er eigenlijk mee kan doen.
Mocht je, na het lezen van deze FAQ, vragen hebben, twijfel niet en open een topic.

In deze FAQ zijn de volgende onderwerpen besproken:
Wat is nu eigenlijk RSS?
Wat is dan eigenlijk het nut van RSS?
Wat is nu eigenlijk XML?
RSS gebruiken op je computer
RSS gebruiken in je website
--- Serverside door middel van PHP
--- Client side door middel van JavaScript in Internet Explorer
Nuttige links

[ Bericht 3% gewijzigd door Sander op 17-10-2005 22:13:26 ]
  maandag 5 april 2004 @ 20:34:52 #2
42782 QuietGuy
opscheppende pats-nerd
pi_18202646
Wat is nu eigenlijk RSS

RSS is een XML-variant. Geen idee wat XML is? Zie dan Wat is nu eigenlijk XML?
RSS (Really Simple Syndication) is gemaakt om nieuwsberichten te kunnen linken in computerprogramma's en websites.
Een RSS-feed bevat dan ook een stroom gegevens met nieuwsberichten.
Zie ook blogs.law.harvard.edu - RSS voor een meer technische uitleg.
  maandag 5 april 2004 @ 20:35:02 #3
42782 QuietGuy
opscheppende pats-nerd
pi_18202650
Wat is dan eigenlijk het nut van RSS

RSS kan in meerdere vormen nuttig zijn, ik behandel er hier twee:

RSS op je eigen website
Met RSS kan je dus nieuwsberichten van een nieuwssite of weblog (bijvoorbeeld frontpage.fok.nl of Nu.nl) in je website plaatsen.
Het nut hiervan is dat je dan dus bijvoorbeeld de laatste 10 FOK!-headlines op je website hebt, en direct naar een nieuwsbericht kan linken.

RSS op je computer
Met RSS kan je ook nieuwsberichten op je computer binnen laten komen. Je computer kijkt automatisch bijvoorbeeld 1x in de 10 minuten of er nieuwe berichten wachten en geeft een popupje als er een nieuw bericht is.
Zeer nuttig als je altijd op de hoogte wilt blijven van het laatste nieuws maar geen zin hebt om steeds alle nieuwssites en weblogs af te struinen.
  maandag 5 april 2004 @ 20:35:14 #4
42782 QuietGuy
opscheppende pats-nerd
pi_18202654
Wat is nu eigenlijk XML

XML (eXtensible Markup Language) is een bestandsformaat, oorspronkelijk ontworpen om gegevens tussen verschillende systemen uit te kunnen wisselen.
Door de enorm simpele opbouw kan bijna iedere soort data dan ook in XML opgeslagen worden.
Zie ook WhatIs.com - XML voor een meer technische uitleg.
  maandag 5 april 2004 @ 20:35:26 #5
42782 QuietGuy
opscheppende pats-nerd
pi_18202659
RSS gebruiken op je computer

Hiervoor zijn vele programmaatjes te verkrijgen met ieder hun eigen voordeel.
Een uitgebreid overzicht vind je op blogs.law.harvard.edu.
Zelf behandel ik de volgende client: Feedreader

Download Feedreader van Sourceforge en installeer dit programma.
Hier kan moeilijk iets bij misgaan denk ik.

Nu gaan we een RSS-feed toevoegen:
  • Start Feedreader als je dat nog niet hebt gedaan.
  • Druk op F2
  • Geef een adres op, bijvoorbeeld http://rss.fok.nl/feeds/nieuws
  • Klik op Next en daarna op Finish
    De RSS-feed is nu toegevoegd.

    Persoonlijk heb ik zelf nog wat dingen ingesteld zodat je amper merkt dat hij meedraait maar een popupje geeft zodra er een nieuw bericht is:
  • Klik op Properties
    Ga naar General en vink aan:
  • Open links in new browser window
  • Run program on startup
  • Start minimized to tray
  •   maandag 5 april 2004 @ 20:35:44 #6
    42782 QuietGuy
    opscheppende pats-nerd
    pi_18202667
    RSS gebruiken in je website

    Hiervoor zijn vele manieren, maar ik behandel er een paar:
    Serverside door middel van PHP
    Client side door middel van JavaScript in Internet Explorer
      maandag 5 april 2004 @ 20:36:02 #7
    42782 QuietGuy
    opscheppende pats-nerd
    pi_18202674
    RSS gebruiken in je website - Serverside door middel van PHP

    Ik heb zelf, speciaal voor deze FAQ een simpel PHP-scriptje in elkaar gezet welke, zonder extra modules, een RSS-feed binnenhaalt:
    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
    <?php
       // RSS-feed
       $adres="http://rss.fok.nl/feeds/nieuws"; 
       // Map waar het RSS-bestand wordt opgeslagen voor de cache
       $cachemap="w:/";
       // Het aantal minuten dat deze feed in de cache blijft staan
       $cachetijd=10;
       
       /* * * * Begin Cache-gebeuren * * * */
       $p=explode("/",$adres);
       $fn=$p[count($p)-1];
       $ln=$cachemap.$i.$fn;
       $maak_cache=false;
       if(file_exists($ln)) {
          if(filemtime($ln)<time()-($cachetijd*60)) {
             $maak_cache=true;
          }
       } else { $maak_cache=true; }
       if($maak_cache) {
          if(@$f_r=fopen($adres,"r")) {
             if(@$f_w=fopen($ln,"w")) {
                while(!feof($f_r)) {
                   $data=fgets($f_r,1024);
                   fputs($f_w,$data);
                }
                fclose($f_w);
                $adres=$ln;
             }
             fclose($f_r);
          }
       }
       if(file_exists($ln)) { $adres=$ln; }
       /* * * * Einde Cache-gebeuren * * * */
       
       // Haalt het RSS-file op en zet deze in een variabele
       if($file=fopen($adres,"r")) {
          while(!feof($file)) {
             $data.=fgets($file,1024);
          }
          fclose($file);
       }
       
       // Zet de RSS-feed in een array
       $p=explode("<item>",$data);
       for($i=0;$i<count($p);$i++) {
          $item=$p[$i];
          if($q=stristr($item,"<title")) { $r=stristr($q,"</title"); $rss[$i]['title']=substr($q,7,strlen($q)-strlen($r)-7); }
          if($q=stristr($item,"<description")) { $r=stristr($q,"</description"); $rss[$i]['description']=substr($q,13,strlen($q)-strlen($r)-13); }
          if($q=stristr($item,"<pubDate")) { $r=stristr($q,"</pubDate"); $rss[$i]['pubdate']=strtotime(substr($q,9,strlen($q)-strlen($r)-9)); }
          if($q=stristr($item,"<link")) { $r=stristr($q,"</link"); $rss[$i]['link']=substr($q,6,strlen($q)-strlen($r)-6); }
       }
    ?>

    Dit script maakt een array aan welke je supersimpel kan laten weergeven door bijvoorbeeld deze code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!-- Begin: weergave van de RSS-feed -->
    <table border=1>
    <?php
       for($i=0;$i<count($rss);$i++) {
          echo " <tr><td><b><a href=\"".$rss[$i]['link']."\" target=\"_blank\">".$rss[$i]['title']."</a></b><br>";
          echo html_entity_decode($rss[$i]['description']);
          echo "<br><i>Geschreven op ".date("d-m-Y H:i:s",$rss[$i]['pubdate'])."</i>";
          echo "</td></tr>\n";
       }
    ?>
    </table>
    <!-- Einde: weergave van de RSS-feed -->

    Aanpassen van deze codes lijkt me geen probleem.

    Let wel op, deze PHP code schrijft de RSS-feed lokaal weg in $cachemap en laat deze een aantal ($cachetijd) minuten staan.
    Hiervoor is schrijfrecht nodig in de map $cachemap
    Gebruik de cache! Anders kost het jou en de eigenaar van de RSS-feed waarschijnlijk onnodige bandbreedte.
    Met deze instellingen wordt de feed maximaal 1x per 10 minuten opgehaald. Anders bij iedere pagina-aanvraag.

    [ Bericht 39% gewijzigd door QuietGuy op 03-01-2005 10:39:24 ]
      maandag 5 april 2004 @ 20:36:25 #8
    42782 QuietGuy
    opscheppende pats-nerd
    pi_18202679
    RSS gebruiken in je website - Client side door middel van JavaScript in Internet Explorer

    Ik heb zelf, speciaal voor deze FAQ een simpel Java-scriptje in elkaar gezet welke, zonder extra modules, een RSS-feed binnenhaalt:
    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
    <html>
     <head>
      <script language="JavaScript" type="text/javascript">
       function rssreader_datasetComplete(evt) {
          var what=evt.srcElement;
          var rss_channel=what.namedRecordset("","channel");
          rss_channel.MoveFirst();
          rssfeed_title=rss_channel.Fields("title").value;
          rssfeed_link=rss_channel.Fields("link").value;
          rssfeed_description=rss_channel.Fields("description").value;
          rssfeed_received_info();
          
          var rss_items=what.namedRecordset("", "channel.item");
          rss_items.MoveFirst();
          for (var iItem=0;iItem<rss_items.RecordCount;iItem++) {
             var title=rss_items.Fields("title").value;
             var description=rss_items.Fields("description").value;
             var link=rss_items.Fields("link").value;
             var pubdate=rss_items.Fields("pubDate").value;
             rssfeed_received_message(title,link,description,pubdate);
             rss_items.MoveNext();
          }
       }
       
       // Weergave vind hier plaats
       function rssfeed_received_info() {
          var htmlcode='<b><a href="'+rssfeed_link+'" target="blank">'+rssfeed_title+'</a><br></b>';
          htmlcode+=rssfeed_description+"<br>";
          document.getElementById('rss').innerHTML=htmlcode;
       }
       function rssfeed_received_message(title,link,description,pubdate) {
          var htmlcode='<i><a href="'+link+'" target="_blank">'+title+'</a><br></i>';
          //htmlcode+=description+"<br>";
          document.getElementById('rss').innerHTML+=htmlcode;
       }
      </script>
     </head>
     <body>
      <xml src="http://rss.fok.nl/feeds/nieuws" onDatasetComplete="rssreader_datasetComplete(event);"></xml>
      <div id="rss"></div>
     </body>
    </html>

    Deze heeft wel als nadeel dat hij niet in alle browsers werkt. Ik gebruik dan ook liever PHP voor dit doel.

    [ Bericht 11% gewijzigd door QuietGuy op 03-01-2005 10:39:40 ]
      maandag 5 april 2004 @ 20:36:37 #9
    42782 QuietGuy
    opscheppende pats-nerd
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')