該套件提供了一種為 Laravel 應用程式生成提要的簡單方法。支援的格式有 RSS、Atom 和 JSON。您幾乎不需要編碼。只需按照安裝說明進行操作,更新您的配置文件,就可以開始了。
Spatie 是一家位於比利時安特衛普的網頁設計公司。您可以在我們的網站上找到所有開源專案的概述。
我們投入了大量資源來創建一流的開源套件。您可以透過購買我們的一款付費產品來支持我們。
我們非常感謝您從家鄉寄給我們一張明信片,並註明您正在使用我們的哪種套餐。您可以在我們的聯絡頁面上找到我們的地址。我們在虛擬明信片牆上發布所有收到的明信片。
您可以透過 Composer 安裝該軟體包:
composer require spatie/laravel-feed
使用feeds
-macro 註冊將顯示 feed 的路由。
// In routes/web.php
Route:: feeds ();
或者,您可以傳遞字串作為巨集的第一個參數。該字串將用作所有配置的來源的 URL 前綴。
接下來,您必須發佈設定檔:
php artisan feed:install
看起來是這樣的:
return [
' feeds ' => [
' main ' => [
/*
* Here you can specify which class and method will return
* the items that should appear in the feed. For example:
* [AppModel::class, 'getAllFeedItems']
*
* You can also pass an argument to that method. Note that their key must be the name of the parameter: *
* [AppModel::class, 'getAllFeedItems', 'parameterName' => 'argument']
*/
' items ' => '' ,
/*
* The feed will be available on this url.
*/
' url ' => '' ,
' title ' => ' My feed ' ,
' description ' => ' The description of the feed. ' ,
' language ' => ' en-US ' ,
/*
* The image to display for the feed. For Atom feeds, this is displayed as
* a banner/logo; for RSS and JSON feeds, it's displayed as an icon.
* An empty value omits the image attribute from the feed.
*/
' image ' => '' ,
/*
* The format of the feed. Acceptable values are 'rss', 'atom', or 'json'.
*/
' format ' => ' atom ' ,
/*
* The view that will render the feed.
*/
' view ' => ' feed::atom ' ,
/*
* The mime type to be used in the <link> tag. Set to an empty string to automatically
* determine the correct value.
*/
' type ' => '' ,
/*
* The content type for the feed response. Set to an empty string to automatically
* determine the correct value.
*/
' contentType ' => '' ,
],
],
];
您可以選擇發布視圖檔案:
php artisan vendor:publish --provider= " SpatieFeedFeedServiceProvider " --tag= " feed-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 )
-> authorName ( $ this -> author )
-> authorEmail ( $ this -> authorEmail );
}
}
如果您願意,傳回帶有必要鍵的關聯數組也可以達到目的。
// 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 ,
' authorName ' => $ this -> authorName ,
]);
}
}
接下來,您必須建立一個方法來傳回必須在提要中顯示的所有項目。您可以將該方法命名為您喜歡的任何名稱,並且可以執行您想要的任何查詢。
// 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:
* 'AppModel@getAllFeedItems'
* or
* ['AppModel', 'getAllFeedItems']
*
* You can also pass an argument to that method. Note that their key must be the name of the parameter: *
* ['AppModel@getAllFeedItems', 'parameterName' => 'argument']
* or
* ['AppModel', 'getAllFeedItems', 'parameterName' => 'argument']
*/
' items ' => ' AppNewsItem@getFeedItems ' ,
/*
* The feed will be available on this url.
*/
' url ' => ' /feed ' ,
' title ' => ' All newsitems on mysite.com ' ,
/*
* The format of the feed. Acceptable values are 'rss', 'atom', or 'json'.
*/
' format ' => ' atom ' ,
/*
* Custom view for the items.
*
* Defaults to feed::feed if not present.
*/
' view ' => ' feed::feed ' ,
],
],
];
items
鍵必須指向傳回下列值之一的方法:
Feedable
的陣列或集合FeedItem
的陣列或集合這個包提供了開箱即用的feed::feed
視圖,用於顯示您的 feed 詳細資料。
但是,您可以透過在 Feed 配置中提供view
鍵來為每個 Feed 使用自訂視圖。
在以下範例中,我們將先前的News
與自訂feeds.news
視圖(位於resources/views/feeds/news.blade.php
)一起使用:
// config/feed.php
return [
' feeds ' => [
' news ' => [
' items ' => [ ' AppNewsItem ' , ' getFeedItems ' ],
' url ' => ' /feed ' ,
' title ' => ' All newsitems on mysite.com ' ,
/*
* The format of the feed. Acceptable values are 'rss', 'atom', or 'json'.
*/
' format ' => ' atom ' ,
/*
* Custom view for the items.
*
* Defaults to feed::feed if not present.
*/
' view ' => ' feeds.news ' ,
],
],
];
要發現提要,提要閱讀器會在 html 文件的 head 部分中找到如下所示的標籤:
< link rel =" alternate " type =" application/atom+xml " title =" News " href =" /feed " >
您可以透過部分視圖將其新增至您的<head>
。
@ include ( ' feed::links ' )
作為替代方案,您可以使用此刀片組件:
< x-feed-links />
composer test
請參閱變更日誌以了解有關最近更改內容的更多資訊。
詳細資訊請參閱貢獻。
請查看我們的安全政策,以了解如何通報安全漏洞。
麻省理工學院許可證 (MIT)。請參閱許可證文件以獲取更多資訊。