isaacongoma / laravel-feed
生成RSS订阅
Requires
- php: ^7.4|^8.0
- illuminate/contracts: ^7.0|^8.0
- illuminate/http: ^7.0|^8.0
- illuminate/support: ^7.0|^8.0
- spatie/laravel-package-tools: ^1.5
Requires (Dev)
- orchestra/testbench: ^5.0|^6.0
- phpunit/phpunit: ^9.3
- spatie/phpunit-snapshot-assertions: ^4.2
- spatie/test-time: ^1.2
- dev-master
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- 2.7.1
- 2.7.0
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.0
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.1
- 2.3.0
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- v1.x-dev
- 1.4.1
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.10
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-analysis-qJj03D
- dev-analysis-q1jE55
This package is auto-updated.
Last update: 2024-09-05 14:35:55 UTC
README
本包提供了一种简单的方式来生成RSS订阅。您几乎不需要编写任何代码。只需按照安装说明更新配置文件,然后您就可以开始了。
spatie是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述在这里。
支持我们
我们在创建一流的开放源代码包上投入了大量的资源。您可以通过购买我们的付费产品之一来支持我们。
我们非常感激您从家乡寄给我们明信片,并说明您正在使用我们的哪些包。您可以在我们的联系页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。
安装
您可以通过composer安装此包
composer require spatie/laravel-feed
使用feeds-宏注册将显示订阅的路线。
// In routes/web.php Route::feeds();
您可以将字符串作为宏的第一个参数传递。该字符串将用作您订阅的URL前缀。
接下来,您必须发布配置文件
php artisan vendor:publish --provider="Spatie\Feed\FeedServiceProvider" --tag="config"
下面是这个样子
return [ 'feeds' => [ 'main' => [ /* * Here you can specify which class and method will return * the items that should appear in the feed. For example: * 'App\Model@getAllFeedItems' * * You can also pass an argument to that method: * ['App\Model@getAllFeedItems', 'argument'] */ 'items' => '', /* * The feed will be available on this url. */ 'url' => '', 'title' => 'My feed', 'description' => 'The description of the feed.', 'language' => 'en-US', /* * The view that will render the feed. */ 'view' => 'feed::feed', ], ], ];
可选地,您可以发布视图文件
php artisan vendor:publish --provider="Spatie\Feed\FeedServiceProvider" --tag="views"
用法
假设您有一个名为NewsItem的模型,其中包含您想要在订阅中显示的记录。
首先,您必须在模型上实现Feedable接口。Feedable期望一个方法:toFeedItem,它应返回一个FeedItem实例。
// app/NewsItem.php use Illuminate\Database\Eloquent\Model; use Spatie\Feed\Feedable; use Spatie\Feed\FeedItem; class NewsItem extends Model implements Feedable { public function toFeedItem(): FeedItem { return FeedItem::create() ->id($this->id) ->title($this->title) ->summary($this->summary) ->updated($this->updated_at) ->link($this->link) ->author($this->author); } }
如果您愿意,返回一个包含必要键的关联数组也可以。
// app/NewsItem.php use Illuminate\Database\Eloquent\Model; use Spatie\Feed\Feedable; use Spatie\Feed\FeedItem; class NewsItem extends Model implements Feedable { public function toFeedItem(): FeedItem { return FeedItem::create([ 'id' => $this->id, 'title' => $this->title, 'summary' => $this->summary, 'updated' => $this->updated_at, 'link' => $this->link, 'author' => $this->author, ]); } }
接下来,您必须创建一个方法,该方法将返回必须在订阅中显示的所有项目。您可以为该方法命名任何您喜欢的名称,并且您可以执行任何查询。
// app/NewsItem.php public static function getFeedItems() { return NewsItem::all(); }
最后,您必须在配置文件中放置您类的名称以及您想要渲染订阅的URL
// config/feed.php return [ 'feeds' => [ 'news' => [ /* * Here you can specify which class and method will return * the items that should appear in the feed. For example: * '\App\Model@getAllFeedItems' */ 'items' => 'App\NewsItem@getFeedItems', /* * The feed will be available on this url. */ 'url' => '/feed', 'title' => 'All newsitems on mysite.com', /* * Custom view for the items. * * Defaults to feed::feed if not present. */ 'view' => 'feed::feed', ], ], ];
items键必须指向返回以下之一的方法
- 一个包含
Feedable的数组或集合 - 一个包含
FeedItem的数组或集合 - 包含订阅项值的数组或集合的数组
自定义您的订阅视图
该包提供开箱即用的feed::feed视图,用于显示订阅的详细信息。
但是,您可以通过在订阅配置中提供view键来使用每个订阅的定制视图。
在下面的示例中,我们使用之前的News订阅,并使用定制的feeds.news视图(位于resources/views/feeds/news.blade.php)
// config/feed.php return [ 'feeds' => [ 'news' => [ 'items' => 'App\NewsItem@getFeedItems', 'url' => '/feed', 'title' => 'All newsitems on mysite.com', /* * Custom view for the items. * * Defaults to feed::feed if not present. */ 'view' => 'feeds.news', ], ], ];
自动生成订阅链接
为了发现订阅,订阅阅读器正在寻找HTML文档的头部部分中的一个看起来像这样的标签
<link rel="alternate" type="application/atom+xml" title="News" href="/feed">
您可以通过部分视图将其添加到您的<head>中。
@include('feed::links')
更新日志
请参阅变更日志获取更多关于最近更改的信息。
测试
composer test
贡献
请参阅贡献指南获取详细信息。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件freek@spatie.be联系,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。