このパッケージは、Laravel アプリケーションのフィードを生成する簡単な方法を提供します。サポートされている形式は RSS、Atom、および JSON です。ユーザー側でのコーディングはほとんど必要ありません。インストール手順に従い、構成ファイルを更新するだけで準備完了です。
Spatie は、ベルギーのアントワープに拠点を置くウェブデザイン会社です。当社のすべてのオープンソース プロジェクトの概要は、当社の Web サイトでご覧いただけます。
私たちはクラス最高のオープンソース パッケージの作成に多くのリソースを投資しています。有料製品のいずれかを購入することで、私たちをサポートできます。
当社のどのパッケージを使用しているかについて、故郷から葉書を送っていただき、誠にありがとうございます。当社の住所は、お問い合わせページに記載されています。受け取ったすべてのポストカードをバーチャル ポストカード ウォールに公開します。
パッケージは、composer 経由でインストールできます。
composer require spatie/laravel-feed
feeds
-macro を使用して、フィードが表示されるルートを登録します。
// 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
という 1 つのメソッドを想定しており、これは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
ビューがすぐに提供されます。
ただし、フィード構成内にview
キーを指定することで、フィードごとにカスタム ビューを使用できます。
次の例では、カスタムfeeds.news
ビュー ( resources/views/feeds/news.blade.php
にあります) で前のNews
フィードを使用しています。
// 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
最近の変更点の詳細については、CHANGELOG を参照してください。
詳細については、「貢献」を参照してください。
セキュリティの脆弱性を報告する方法については、セキュリティ ポリシーをご覧ください。
MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。