proger / feeder
Standalone module to generate standards-compliant RSS 0.92, 2.0 and Atom feeds from a single data source.
This package is not auto-updated.
Last update: 2024-03-16 12:07:10 UTC
README
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. All Feeder scripts are in public domain and require PHP 5+.
Sample generated feeds, detailed API and description | Laravel bundle | Forum thread
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].
Features
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
Example
$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'); // this is a shortcut for calling $feed->feed()->send(...); // you can also just $feed->Rss20(), Rss092() or Atom();
Installation
Composer
Available under proger/feeder
at Packagist.
Laravel 3
php artisan bundle:install feeder
example-*.php
and smile.png
files are only samples and are not required for work.
.htaccess
and entry.php
are only used if you're using TextFeeder.
chained.php
is only used if you're using chained calls (like in the example above). feeder.php
is the core set of classes that is self-contained.
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.