Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/progerxp/feeder
Standalone module to generate standards-compliant RSS 0.92, 2.0 and Atom feeds from a single data source. Via Composer and Laravel 3 bundle.
https://github.com/progerxp/feeder
Last synced: about 2 months ago
JSON representation
Standalone module to generate standards-compliant RSS 0.92, 2.0 and Atom feeds from a single data source. Via Composer and Laravel 3 bundle.
- Host: GitHub
- URL: https://github.com/progerxp/feeder
- Owner: ProgerXP
- Created: 2012-05-11T07:19:10.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2014-03-16T21:23:50.000Z (almost 11 years ago)
- Last Synced: 2024-04-06T19:02:21.914Z (9 months ago)
- Language: PHP
- Homepage: http://proger.i-forge.net/PHP_Feeder/7sg
- Size: 240 KB
- Stars: 17
- Watchers: 6
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Feeder
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](http://proger.i-forge.net/PHP_Feeder/7sg) | [Laravel bundle](http://bundles.laravel.com/bundle/detail/feeder) | [Forum thread](http://forums.laravel.com/viewtopic.php?id=1160)
It's used in real action on Laravel.ru's article feed: [RSS 2.0](http://laravel.ru/feed/articles/rss20) | [RSS 0.92](http://laravel.ru/feed/articles/rss092) | [Atom](http://laravel.ru/feed/articles/atom) [all three are generated using the code almost identical to the example below].
### Features
Before creating this I have [dug through](http://proger.i-forge.net/Syndication_formats_%E2%80%93_RSS_0_92_2_0_-amp_Atom_1_0/7Zf) 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](http://proger.i-forge.net/PHP_Feeder/7sg#textfeeder)### Example
```PHP
$feed = Feed::make();$feed->logo(asset('logo.png'))
->icon(URL::home().'favicon.ico')
->webmaster('Proger_XP [email protected] http://i-forge.net/me')
->author ('Proger_XP [email protected] 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](https://packagist.org/packages/proger/feeder).
#### 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**:
```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](http://laravel.com/docs/ioc) for starting the bundle when it's used.