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.0、RSS 0.92 和 Atom 订阅源 - 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-*.php
和 smile.png
文件仅作为示例,不是必需的。 .htaccess
和 entry.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 容器 以在需要时启动扩展包。