Feed Writer Generator Extension to create your feeds. Currently supports RSS 1.0, RSS 2.0 and ATOM 1.0.
Unzip the contents of the package and place it on your protected/extensions folder.
Examples of use
RSS 1.0
Yii::import('ext.feed.*'); // specify feed type $feed = new EFeed(EFeed::RSS1); $feed->title = 'Testing the RSS 1 EFeed class'; $feed->link = 'http://www.ramirezcobos.com'; $feed->description = 'This is test of creating a RSS 1.0 feed by Universal Feed Writer'; $feed->RSS1ChannelAbout = 'http://www.ramirezcobos.com/about'; // create our item $item = $feed->createNewItem(); $item->title = 'The first feed'; $item->link = 'http://www.yiiframework.com'; $item->date = time(); $item->description = 'Amaz-ii-ng <b>Yii Framework</b>'; $item->addTag('dc:subject', 'Subject Testing'); $feed->addItem($item); $feed->generateFeed();
RSS 2.0
Yii::import('ext.feed.*'); // RSS 2.0 is the default type $feed = new EFeed(); $feed->title= 'Testing RSS 2.0 EFeed class'; $feed->description = 'This is test of creating a RSS 2.0 Feed'; $feed->setImage('Testing RSS 2.0 EFeed class','http://www.ramirezcobos.com/rss', 'http://www.yiiframework.com/forum/uploads/profile/photo-7106.jpg'); $feed->addChannelTag('language', 'en-us'); $feed->addChannelTag('pubDate', date(DATE_RSS, time())); $feed->addChannelTag('link', 'http://www.ramirezcobos.com/rss' ); // * self reference $feed->addChannelTag('atom:link','http://www.ramirezcobos.com/rss/'); $item = $feed->createNewItem(); $item->title = "first Feed"; $item->link = "http://www.yahoo.com"; $item->date = time(); $item->description = 'This is test of adding CDATA Encoded description <b>EFeed Extension</b>'; // this is just a test!! $item->setEncloser('http://www.tester.com', '1283629', 'audio/mpeg'); $item->addTag('author', 'thisisnot@myemail.com (Antonio Ramirez)'); $item->addTag('guid', 'http://www.ramirezcobos.com/',array('isPermaLink'=>'true')); $feed->addItem($item); $feed->generateFeed(); Yii::app()->end();
ATOM 1.0
Yii::import('ext.feed.*'); $feed = new EFeed(EFeed::ATOM); // IMPORTANT : No need to add id for feed or channel. It will be automatically created from link. $feed->title = 'Testing the ATOM RSS EFeed class'; $feed->link = 'http://www.ramirezcobos.com'; $feed->addChannelTag('updated', date(DATE_ATOM, time())); $feed->addChannelTag('author', array('name'=>'Antonio Ramirez Cobos')); $item = $feed->createNewItem(); $item->title = 'The first Feed'; $item->link = 'http://www.ramirezcobos.com'; // we can also insert well formatted date strings $item->date ='2010/24/12'; $item->description = 'Test of CDATA Encoded description <b>EFeed Extension</b>'; $feed->addItem($item); $feed->generateFeed();
Total 17 comments
I'll do it on my free time, thanks for pointing that out, but there are ways to tell people what to do or not, don't you think?
Moreover, there is a GitHub project where YOU can support the extension and help the community with the change.
This code generate next:
Why tag channel rdf:about=""/> is closed? "/>" Fix this bug!
Having a return rss content option would be nice. Like this:
This is useful for those who may want to cache
Hi Ben,
About your requests, if you look at the change log you realize that it is already implemented as one of our colleagues did requested it before.
About your first request, custom namespaces, I will try to implement it asap, is a good idea. Nevertheless, if you wish to contribute to the extension, please fork it from the GitHub repository. Everybody welcome :)
Hi, thanks for that extension, works very well. However, I'm missing two small features:
Any plans to extend this?
Thank you very much for your input... will update for stylesheet support asap.
Please add styling support. It goes in the header:
@tonydspaniard error has been fixed, I upgraded to the latest framework yii
Please post your issues at the forum post. Will be happy to hear but it sounds you have an issue with your Yii configuration. CTypedMap is part of Yii core.
http://www.yiiframework.com/doc/api/1.1/CTypedMap
i use this ext, and find error : include(CTypedMap.php): failed to open stream: No such file or directory,
can help me?
Great suggestion!
I am in the middle of adding MRSS and iTunes support to the extension. Unfortunately I am very busy at the moment.
I will consider the dataProvider recommendation aswel. Very good feedback, thanks.
I need MRSS (Media RSS) support so I tried to extend your class to add the necessary second xmlns, but I found $type and renderHead() private rather than protected preventing this.
You should change your private classes, when appropriate, protected to make it more extensible.
Even better, for my particular needs, would have been for renderHead() to either get the header from the appropriate EFeedItem class (not sure how you would structure that well) or to build it's data from a modifiable associative array.
I would also be nice to have it behave like classes such as CGridView where a dataProvider can be passed to it along with a list of column names and the items auto populated from that.
This extension was very easy to get running, and quite effective. Thank you for sharing it.
@tonydspaniard: Thanks! Looks like an awesome extension.
Please keep us posted with your progress with making your extension more universal.
We will need to use itunes specific tags.
Any feedback to create a better extension always welcome. I would love to make this RSS feed much more universal (iTunes for example?)
Thank you! Very easy to use, and doesn't have to include parts of other frameworks to use! ;)
Looks great, I'll be definitively using it soon and then I'll give you my feedback
Leave a comment
Please login to leave your comment.