This bundle lets you generate RSS 2.0, RSS 0.92 and Atom feeds by just setting the data you want - and Feeder will take care of mapping it to the target standard-specific output.
Sample generated feeds, detailed API and description.
It's used in real action on Laravel.ru's article feed: RSS 2.0 | RSS 0.92 | Atom [all three are generated using the code almost identical to the example below].
Before creating this I have dug through every bit in those specifications (RSS 2.0, 0.92 and Atom) so it should be pretty complete.
- Pretty output with indentation
- W3C Validation passed for all 3 formats
- Unicode-aware
- You can generate feeds from YAML text files without coding anything - details
$feed = Feed::make();
$feed->logo(asset('logo.png'))
->icon(URL::home().'favicon.ico')
->webmaster('Proger_XP proger.xp@gmail.com http://i-forge.net/me')
->author ('Proger_XP proger.xp@gmail.com http://i-forge.net/me')
->rating('SFW')->
->pubdate(time())
->ttl(60)
->title('My feed')
->description('Sample feed generated by PHP Feeder.')
->copyright('(c) '.date('Y').' Example.com')
->permalink(route('feed', 'rss20'))
->category('PHP')
->language('ru_RU')
->baseurl(URL::home());
foreach ($posts as $post) {
$feed->entry()->published($post['published'])
->description()->add('html', $post['synopsis'])->up()
->title($post['title'])
->permalink($post['url'])
->author($post['author'])
->updated($post['posted']);
}
$feed->send('rss20');
// or just $feed->Rss20(); - or Rss092() - or ->Atom()
php artisan bundle:install feeder
application/bundles.php:
'feeder' => array(
// when the bundle is started all Feeder classes are automatically loaded
// so you can either autostart it or have autoloader mappings (more efficient).
//'auto' => true,
'autoloads' => array(
'map' => array(
'Feed' => '(:bundle)/chained.php',
'FeedChannel' => '(:bundle)/feeder.php',
'FeedEntry' => '(:bundle)/feeder.php',
'Feeder' => '(:bundle)/feeder.php',
'TextFeeder' => '(:bundle)/feeder.php',
'FeedOut' => '(:bundle)/feeder.php',
),
),
),
The list of autoloader mappings depends on your application - if you're just using chained calls (as in the example above) you only need the first Feed => chained mapping; otherwise you might want to autostart the bundle if you're unsure. You can also define IoC containers for starting the bundle when it's used.