login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Rss Feed

Offline Legolas - 08/05/2005 13:26 (laatste wijziging 08/05/2005 13:27)
Avatar van LegolasOnbekend hoi,
ik ben net klaar met een rss feed maker.
maar nou zit ik met de volgende vraag:
als je aan php hebt verteld, dat het een xml document is (header("Content-Type: application/xml; charset=UTF-8");)
parset php het bestand dan?
doet ie dat dan?
zou wel fijn zijn anders kan ik de hele zooi weer gaan omgooien:(

17 antwoorden

Gesponsorde links
Offline Thomas - 08/05/2005 14:19
Avatar van Thomas Moderator Zolang dit bestand de extensie .php heeft (of wat jij gebruikt om het als PHP-bestand te zien) zal het gewoon geparsed worden.
Offline Legolas - 08/05/2005 14:26
Avatar van Legolas Onbekend nee het bestand heet rss.xml. kan het dan ook nog?
of moet het dan anders
Offline jopiegoekopi - 08/05/2005 14:28
Avatar van jopiegoekopi Onbekend volgens mij bedoel je niet wat fangorn zegt? kun je misschien iets duidelijker uitleggen wat je wilt??
Offline Thomas - 08/05/2005 14:32 (laatste wijziging 08/05/2005 14:32)
Avatar van Thomas Moderator Je gebruikt toch een PHP-bestand om die XML-file te maken neem ik aan ?
Het is ofwel .xml ofwel .php. XML is geen PHP, en het zal dus ook niet als zodanig behandeld worden.

Ik gebruik een template (en TemplatePower) om XML-bestanden te maken / vullen. Werkt prima.
Offline Legolas - 08/05/2005 14:34
Avatar van Legolas Onbekend Ow ik liet het bestand van de RSS uit zichzelf vullen, dus rss.xml was een php bestand dat een bepaalde output levert. Kan dat dus niet?
Kan iemand anders een voorbeeld geven hoe het wel kan?:s
Offline Thomas - 08/05/2005 14:37
Avatar van Thomas Moderator Dat kan wel, maar dat lijkt mij niet de bedoeling. Als je het XML-bestand (PHP-bestand dus) aanspreekt, wordt dus elke keer de database ge-queried en het XML-bestand gevuld right ?

Je kan het XML-bestand toch ook aanpassen elke keer dat er daadwerkelijk iets verandert ? Dat lijkt mij véél efficienter (de database wordt niet belast, er wordt "platte tekst" uitgelezen die verder niet geparsed hoeft te worden).

Winst in alle opzichten.

RSS-feeds die de extensie .php hebben zijn IMO per definitie suf .
Offline Legolas - 08/05/2005 14:39
Avatar van Legolas Onbekend En hoe zet je dat dan in RSS?
met fopen() e.d.?
Offline Thomas - 08/05/2005 14:46 (laatste wijziging 08/05/2005 14:49)
Avatar van Thomas Moderator Nou jah, ik gebruik daar een template voor, zodat je alleen die dingen in hoeft te vullen die telkens veranderen. Ik weet niet of je ervaring hebt met TemplatePower ?

In plaats van de content af te drukken naar het scherm (dit is normaal altijd de laatste stap bij TemplatePower) schrijf je deze weg naar een bestand:

(fragment)
  1. // de template is nu gevuld - maak het bestand
  2. $file = $base."/rss/xml/".$rubriek.".xml";
  3. if(!($handle = fopen($file, "wb"))) {
  4. // debug
  5. // die("kon file niet maken");
  6. } else {
  7. fwrite($handle, $tpl->getOutputContent());
  8. fclose($handle);
  9. chmod($file, 0644);
  10. }


En de template:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <rss version="2.0">
  3. <!-- START BLOCK : CHANNEL_TAG -->
  4. <channel>
  5. <!-- mandatory tags -->
  6. <title>{TITLE}</title>
  7. <link>{LINK}</link>
  8. <description>{DESCRIPTION}</description>
  9. <!-- optional tags -->
  10. <language>{LANGUAGE}</language>
  11. <copyright>{COPYRIGHT}</copyright>
  12. <managingEditor>{MAN_EDIT}</managingEditor>
  13. <webMaster>{WEBMASTER}</webMaster>
  14. <pubDate>{PUBDATE}</pubDate>
  15. <lastBuildDate>{LASTBUILDDATE}</lastBuildDate>
  16. <category>{CATEGORY}</category>
  17. <generator>{GENERATOR}</generator>
  18. <docs>http://blogs.law.harvard.edu/tech/rss/</docs>
  19.  
  20. <!-- channel items -->
  21. <!-- START BLOCK : ITEM_TAG -->
  22. <item>
  23. <title><![CDATA[{ITEM_TITLE}]]></title>
  24. <link>{ITEM_LINK}</link>
  25. <description><![CDATA[{ITEM_DESCRIPTION}]]></description>
  26. <author><![CDATA[{ITEM_AUTHOR}]]></author>
  27. <category><![CDATA[{ITEM_CATEGORY}]]></category>
  28. <pubDate>{ITEM_PUBDATE}</pubDate>
  29. </item>
  30. <!-- END BLOCK : ITEM_TAG -->
  31. </channel>
  32. <!-- END BLOCK : CHANNEL_TAG -->
  33. </rss>
Offline Legolas - 08/05/2005 14:48
Avatar van Legolas Onbekend Ik heb genoeg ervaring met TemplatePower, maar weet nou niet waar dit bestand staat. Is dit de template?
En ook dit:
wat is de fopen manier "wb"????
Offline Thomas - 08/05/2005 14:50
Avatar van Thomas Moderator binary safe write

template staat hierboven
Offline Legolas - 08/05/2005 14:55 (laatste wijziging 08/05/2005 14:55)
Avatar van Legolas Onbekend Sorry hoor maar ik snap het niet (komt mss omdat ik:
- dom ben
- jong ben
)
Maar eh...
Ik had dus dit bestand:
  1. <?
  2. header("Content-Type: application/xml; charset=UTF-8"); // We moeten PHP natuurlijk wel vertellen, dat het gaat om een XML bestand
  3. include("config.php"); // dit includen, om naar database te connecteren!
  4. ?>
  5. <rss version="2.0"> <!-- RSS versie --->
  6. <channel> <!-- Begin het kanaal --->
  7. <title>uwdomein.xxx Rss feed</title> <!-- Titel van de feed --->
  8. <link>http://www.uwdomein.xxx</link> <!-- Link naar de homepage van jouw website --->
  9. <description>Beschrijving</description> <!-- stel hier beschrijving in van feed --->
  10. <language>nl</language> <!-- stel hier je taal in van de feed --->
  11. <webmaster>webmaster@jouwdomein.xxx</webmaster> <!-- email van de webmaster --->
  12. <?
  13. $rquery = mysql_query("SELECT * FROM tutorials ORDER BY id DESC LIMIT 5"); // query om laatste 5 tutorials op te halen, verander tutorials in bijv. nieuws, of een andere tabelnaam, om de laatste 5 items van die tabel op te halen!
  14. while($fetch = mysql_fetch_assoc($rquery)) {
  15. if(DB::isError($fetch) die($fetch->getMessage()); // if there is an error, display it
  16. $tutorial = stripslashes($fetch['tutorial']); // execute stripslashes
  17. $tutorial = substr($tutorial, 0, 40); // alleen eerste 40 tekens bij beschrijving
  18. echo "<item><title>".$fetch['titel']."</title><link>http://www.yourdomain.xxx/tutorials.php?id=".$show['id']."</link><description>". substr($fetch['tutorial'],0,25) ."...</description><author>". $fetch['auteur'] ."</author><pubDate>". $fetch['datumtijd'] ."</pubDate></item>"; // de hele echo, spreekt voorzich
  19. }
  20. ?>
  21. </channel></rss>

Vragen
------
1.En snap dus nu even niet meer, hoe ik het moet aanpassen. Enig idee?
2. In welk bestand moet [fragment] staan en waar moet het RSS bestand nou staan.
------
Als ik het dus goed begrijp, is er sprake van 3 bestanden?
1.rss.tpl
2.filler.php
3.rss.xml
?
Offline Thomas - 08/05/2005 15:04 (laatste wijziging 08/05/2005 15:05)
Avatar van Thomas Moderator Jep, je maakt dus een script filler.php, waarin functies staan die gebruik maken van templatepower, waarmee je de RSS-template kunt vullen en waarmee je XML-bestanden kunt aanmaken.

De functies in filler.php waarmee je een XML-bestand kunt maken/updaten roep je bijvoorbeeld aan nadat je een nieuw nieuwsitem hebt gepost (of een bestaand nieuwsitem hebt ge-edit).
De bijbehorende XML-file (nieuws.xml) wordt dan aangemaakt / geupdate.

Je past dus alleen het XML-bestand aan als er iets verandert (aangepast nieuwsitem, nieuw nieuwsitem).
Offline Legolas - 08/05/2005 15:10
Avatar van Legolas Onbekend Dus als ik het goed snap:
1.je post nieuws
2.filler.php wordt aangeroepen, en haalt de 5 nieuwste items op, en zet die via templatepower in het RSS bestand.
3.rss.xml is gereed.
ZO??
Offline Thomas - 08/05/2005 15:57
Avatar van Thomas Moderator Jup, helemaal.

Zo gebeurt het ook op sitemasters - wanneer er een script/nieuwsitem/tutorial of download wordt aangemaakt / geupdate hoef je enkel het volgende te doen:

  1. // item is hierboven ergens aangemaakt/geupdate
  2.  
  3. include("rss_functionaliteit.php");
  4. maak_rss("nieuws", 10);
  5. // waarbij nieuws de rubriek is waarvoor een XML-bestand
  6. // gemaakt/overschreven moet worden, en 10 het aantal
  7. // items dat in het XML-bestand dient te komen staan
Offline Legolas - 08/05/2005 16:02
Avatar van Legolas Onbekend Ah jah.
Ik snap het nu helemaal, heel erg bedankt voor de hulp.
Was eigenlijk met een script voor SM hier bezig, maar ik denk dat er heel veel gaan klagen als er dus eerst mensen me helpen en ik het dan post.
Nog 1 vraagje:
die 1e param van maak_rss(), is dat dus de categorie waar hij het inzet?
Offline Thomas - 08/05/2005 16:10
Avatar van Thomas Moderator Die 1e parameter bepaalt:

- welke query binnen de functie uitgevoerd gaat worden (om de juiste gegevens voor die rubriek te verzamelen)
- hoe de gegevens in je XML-template worden gezet (sommige rubrieken verschillen qua invulling van de template)
- de naam van het te genereren XML-bestand
Offline Legolas - 08/05/2005 16:11
Avatar van Legolas Onbekend Ok ik snap het heel erg thnx FangorN!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.203s