I use this piece of code to create the rss-feeds on my sites. I want to share this with you all as I have learned a lot from these boards and want to give something back. the code : class RSSFeed { // VARIABLES // channel vars var $channel_url; var $channel_title; var $channel_description; var $channel_lang; var $channel_copyright; var $channel_date; var $channel_creator; var $channel_subject; // image var $image_url; // items var $items = array(); var $nritems; // FUNCTIONS // constructor function RSSFeed() { $this->nritems=0; $this->channel_url=''; $this->channel_title=''; $this->channel_description=''; $this->channel_lang=''; $this->channel_copyright=''; $this->channel_date=''; $this->channel_creator=''; $this->channel_subject=''; $this->image_url=''; } // set channel vars function SetChannel($url, $title, $description, $lang, $copyright, $creator, $subject) { $this->channel_url=$url; $this->channel_title=$title; $this->channel_description=$description; $this->channel_lang=$lang; $this->channel_copyright=$copyright; $this->channel_date=date("Y-m-d").'T'.date("H:i:s").'+01:00'; $this->channel_creator=$creator; $this->channel_subject=$subject; } // set image function SetImage($url) { $this->image_url=$url; } // set item function SetItem($url, $title, $description) { $this->items[$this->nritems]['url']=$url; $this->items[$this->nritems]['title']=$title; $this->items[$this->nritems]['description']=$description; $this->nritems++; } // output feed function Output() { $output = '<?xml version="1.0" encoding="iso-8859-1"?>'."\n"; $output .= '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">'."\n"; $output .= '<channel rdf:about="'.$this->channel_url.'">'."\n"; $output .= '<title>'.$this->channel_title.'</title>'."\n"; $output .= '<link>'.$this->channel_url.'</link>'."\n"; $output .= '<description>'.$this->channel_description.'</description>'."\n"; $output .= '<dc:language>'.$this->channel_lang.'</dc:language>'."\n"; $output .= '<dc:rights>'.$this->channel_copyright.'</dc:rights>'."\n"; $output .= '<dc:date>'.$this->channel_date.'</dc:date>'."\n"; $output .= '<dc:creator>'.$this->channel_creator.'</dc:creator>'."\n"; $output .= '<dc:subject>'.$this->channel_subject.'</dc:subject>'."\n"; $output .= '<items>'."\n"; $output .= '<rdf:Seq>'; for($k=0; $k<$this->nritems; $k++) { $output .= '<rdf:li rdf:resource="'.$this->items[$k]['url'].'"/>'."\n"; }; $output .= '</rdf:Seq>'."\n"; $output .= '</items>'."\n"; $output .= '<image rdf:resource="'.$this->image_url.'"/>'."\n"; $output .= '</channel>'."\n"; for($k=0; $k<$this->nritems; $k++) { $output .= '<item rdf:about="'.$this->items[$k]['url'].'">'."\n"; $output .= '<title>'.$this->items[$k]['title'].'</title>'."\n"; $output .= '<link>'.$this->items[$k]['url'].'</link>'."\n"; $output .= '<description>'.$this->items[$k]['description'].'</description>'."\n"; $output .= '<feedburner:origLink>'.$this->items[$k]['url'].'</feedburner:origLink>'."\n"; $output .= '</item>'."\n"; }; $output .= '</rdf:RDF>'."\n"; return $output; } }; PHP: You would use it like this : $myfeed = new RSSFeed(); $myfeed->SetChannel('http://www.mysite.com/xml.rss', 'My feed name', 'My feed description', 'en-us', 'My copyright text', 'me', 'my subject'); $myfeed->SetImage('http://www.mysite.com/mylogo.jpg'); $myfeed->SetItem('http://www.mysite.com/article.php?id=bla', 'name', 'description'); .... echo $myfeed->output(); PHP: I have a cron script that runs every now and then that writes the output to a an xml file. I ran it through a feed validator and it validates. I hope this might be useful to somebody. Do with it what you will.
My cooking site uses this script to generate it's feed. Have a look at http://www.zucchini.be/rss.xml (it's in dutch)
Magpie can be found at http://magpierss.sourceforge.net/ It is used to parse an rss-feed. It does not create rss feeds. I use it on my news site. It is indeed very good.
Yep, if your site is static you'll have to add the items manually OR you could make a script that parses the directory where your static files are, then open each file and use the <title> tag for instance as the title of the feeditem and add them this way. Depends on how much static files there are and how frequently you create new ones.
I use mysql table and add title, url , desc and date by using a form. So when ever I add content to my site I use that form and store these info in the table. Then another page creates the rss.xml page out of this table info by taking the last 5 new entries, it also creates another JavaScript feed with the records. As I don't add more than 4 or 5 pages in a week so easy for me to handle this way.
hi, I'm not taht good with php yet, can you post these files to download please? can how did you write the corn job? it will be very very helpful! thanks
How to add author name in each item? I have created rss file using your script. Its realy good. But its not showing the author name. How can i set the author name.
Great script and after all this time (since 2005) this thing works great Outputing to file and place cron on .php file Thanks!