proger/feeder

独立的模块,可以从单个数据源生成符合标准的RSS 0.92、2.0和Atom订阅源。

dev-master 2014-03-16 21:24 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:58:09 UTC


README

此扩展包允许您通过设置所需的数据来生成 RSS 2.0RSS 0.92Atom 订阅源 - Feeder 将负责将其映射到目标标准特定的输出。所有 Feeder 脚本均为公有领域,且需要PHP 5+。

示例生成的订阅源,详细API和描述 | Laravel 扩展包 | 论坛主题

它被实际应用于Laravel.ru文章订阅源: RSS 2.0 | RSS 0.92 | Atom [这三个都使用与下面示例几乎相同的代码生成]。

功能

在创建此之前,我已经 深入研究了 这些规范中的每一个(RSS 2.0、0.92和Atom),因此应该相当完整。

  • 输出格式整齐,具有缩进
  • 所有三种格式均通过W3C验证
  • 支持Unicode
  • 您可以从YAML文本文件生成订阅源而无需编写任何代码 - 详情

示例

$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();

安装

Composer

Packagist 上可用,名称为 proger/feeder

Laravel 3

php artisan bundle:install feeder

example-*.phpsmile.png 文件仅作为示例,不是必需的。 .htaccessentry.php 仅在您使用 TextFeeder 时使用。 chained.php 仅在您使用链式调用(如上面的示例)时使用。 feeder.php 是一组自包含的核心类。

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',
    ),
  ),
),

自动加载映射列表取决于您的应用程序 - 如果您仅使用链式调用(如上面的示例所示),则只需第一个 Feed => chained 映射;否则,如果您不确定,可能需要自动启动该扩展包。您还可以定义 IoC 容器 以在需要时启动扩展包。