Skip to content

Latest commit

 

History

History
75 lines (61 loc) · 2.93 KB

README.md

File metadata and controls

75 lines (61 loc) · 2.93 KB

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.

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].

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');
// or just $feed->Rss20(); - or Rss092() - or ->Atom()

Installation

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.