Paket ini menyediakan cara mudah untuk menghasilkan feed untuk aplikasi Laravel Anda. Format yang didukung adalah RSS, Atom, dan JSON. Hampir tidak diperlukan pengkodean di pihak Anda. Cukup ikuti petunjuk instalasi, perbarui file konfigurasi Anda, dan Anda siap melakukannya.
Spatie adalah agen desain web yang berbasis di Antwerpen, Belgia. Anda akan menemukan ikhtisar semua proyek sumber terbuka kami di situs web kami.
Kami menginvestasikan banyak sumber daya untuk menciptakan paket sumber terbuka terbaik di kelasnya. Anda dapat mendukung kami dengan membeli salah satu produk berbayar kami.
Kami sangat menghargai Anda mengirimi kami kartu pos dari kota asal Anda, yang menyebutkan paket kami mana yang Anda gunakan. Anda akan menemukan alamat kami di halaman kontak kami. Kami mempublikasikan semua kartu pos yang diterima di dinding kartu pos virtual kami.
Anda dapat menginstal paket melalui composer:
composer require spatie/laravel-feed
Daftarkan rute tempat feed akan ditampilkan menggunakan feeds
-makro.
// In routes/web.php
Route:: feeds ();
Secara opsional, Anda bisa meneruskan string sebagai argumen pertama makro. String tersebut akan digunakan sebagai awalan URL untuk semua feed yang dikonfigurasi.
Selanjutnya, Anda harus mempublikasikan file konfigurasi:
php artisan feed:install
Berikut tampilannya:
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 ' => '' ,
],
],
];
Secara opsional, Anda dapat mempublikasikan file tampilan:
php artisan vendor:publish --provider= " SpatieFeedFeedServiceProvider " --tag= " feed-views "
Bayangkan Anda memiliki model bernama NewsItem
yang berisi rekaman yang ingin Anda tampilkan di feed.
Pertama, Anda harus mengimplementasikan antarmuka Feedable
pada model tersebut. Feedable
mengharapkan satu metode: toFeedItem
, yang seharusnya mengembalikan instance 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 );
}
}
Jika Anda mau, mengembalikan array asosiatif dengan kunci yang diperlukan juga akan berhasil.
// 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 ,
]);
}
}
Selanjutnya, Anda harus membuat metode yang akan mengembalikan semua item yang harus ditampilkan di feed. Anda dapat memberi nama metode itu apa pun yang Anda suka dan Anda dapat melakukan kueri apa pun yang Anda inginkan.
// app/NewsItem.php
public static function getFeedItems ()
{
return NewsItem:: all ();
}
Terakhir, Anda harus memasukkan nama kelas Anda dan url tempat Anda ingin feed dirender di file konfigurasi:
// 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 ' ,
],
],
];
Kunci items
harus mengarah ke metode yang mengembalikan salah satu hal berikut:
Feedable
sFeedItem
s Paket ini langsung menyediakan tampilan feed::feed
yang menampilkan detail feed Anda.
Namun, Anda dapat menggunakan tampilan khusus per feed dengan menyediakan kunci view
di dalam konfigurasi feed Anda.
Dalam contoh berikut, kami menggunakan feed News
sebelumnya dengan tampilan feeds.news
kustom (terletak di 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 ' ,
],
],
];
Untuk menemukan feed, pembaca feed mencari tag di bagian kepala dokumen html Anda yang terlihat seperti ini:
< link rel =" alternate " type =" application/atom+xml " title =" News " href =" /feed " >
Anda dapat menambahkan ini ke <head>
Anda melalui tampilan sebagian.
@ include ( ' feed::links ' )
Sebagai alternatif Anda dapat menggunakan komponen blade ini:
< x-feed-links />
composer test
Silakan lihat CHANGELOG untuk informasi lebih lanjut tentang apa yang berubah baru-baru ini.
Silakan lihat KONTRIBUSI untuk rinciannya.
Harap tinjau kebijakan keamanan kami tentang cara melaporkan kerentanan keamanan.
Lisensi MIT (MIT). Silakan lihat File Lisensi untuk informasi lebih lanjut.