Dieses Paket bietet eine einfache Möglichkeit, einen Feed für Ihre Laravel-Anwendung zu generieren. Unterstützte Formate sind RSS, Atom und JSON. Es ist von Ihrer Seite fast keine Codierung erforderlich. Befolgen Sie einfach die Installationsanweisungen, aktualisieren Sie Ihre Konfigurationsdatei und schon kann es losgehen.
Spatie ist eine Webdesign-Agentur mit Sitz in Antwerpen, Belgien. Eine Übersicht aller unserer Open-Source-Projekte finden Sie auf unserer Website.
Wir investieren viele Ressourcen in die Erstellung erstklassiger Open-Source-Pakete. Sie können uns unterstützen, indem Sie eines unserer kostenpflichtigen Produkte kaufen.
Wir freuen uns sehr, dass Sie uns eine Postkarte aus Ihrer Heimatstadt schicken und erwähnen, welches unserer Pakete Sie verwenden. Unsere Adresse finden Sie auf unserer Kontaktseite. Wir veröffentlichen alle erhaltenen Postkarten auf unserer virtuellen Postkartenwand.
Sie können das Paket über Composer installieren:
composer require spatie/laravel-feed
Registrieren Sie die Routen, auf denen die Feeds angezeigt werden sollen, indem Sie das feeds
-Makro verwenden.
// In routes/web.php
Route:: feeds ();
Optional können Sie eine Zeichenfolge als erstes Argument des Makros übergeben. Die Zeichenfolge wird als URL-Präfix für alle konfigurierten Feeds verwendet.
Als nächstes müssen Sie die Konfigurationsdatei veröffentlichen:
php artisan feed:install
So sieht das aus:
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 ' => '' ,
],
],
];
Optional können Sie die Ansichtsdateien veröffentlichen:
php artisan vendor:publish --provider= " SpatieFeedFeedServiceProvider " --tag= " feed-views "
Stellen Sie sich vor, Sie haben ein Modell namens NewsItem
, das Datensätze enthält, die im Feed angezeigt werden sollen.
Zuerst müssen Sie die Feedable
-Schnittstelle in diesem Modell implementieren. Feedable
erwartet eine Methode: toFeedItem
, die eine FeedItem
-Instanz zurückgeben soll.
// 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 );
}
}
Wenn Sie möchten, reicht auch die Rückgabe eines assoziativen Arrays mit den erforderlichen Schlüsseln aus.
// 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 ,
]);
}
}
Als Nächstes müssen Sie eine Methode erstellen, die alle Elemente zurückgibt, die im Feed angezeigt werden müssen. Sie können dieser Methode einen beliebigen Namen geben und jede beliebige Abfrage durchführen.
// app/NewsItem.php
public static function getFeedItems ()
{
return NewsItem:: all ();
}
Schließlich müssen Sie in der Konfigurationsdatei den Namen Ihrer Klasse und die URL angeben, unter der der Feed gerendert werden soll:
// 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 ' ,
],
],
];
Der Schlüssel items
muss auf eine Methode verweisen, die eines der folgenden Ergebnisse zurückgibt:
Feedable
sFeedItem
s Dieses Paket stellt standardmäßig die Ansicht feed::feed
bereit, die Ihre Feed-Details anzeigt.
Sie können jedoch eine benutzerdefinierte Ansicht pro Feed verwenden, indem Sie in Ihrer Feed-Konfiguration einen view
bereitstellen.
Im folgenden Beispiel verwenden wir den vorherigen News
Feed mit einer benutzerdefinierten Ansicht feeds.news
(zu finden unter 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 ' ,
],
],
];
Um einen Feed zu entdecken, suchen Feed-Leser im Kopfbereich Ihrer HTML-Dokumente nach einem Tag, das so aussieht:
< link rel =" alternate " type =" application/atom+xml " title =" News " href =" /feed " >
Sie können dies über eine Teilansicht zu Ihrem <head>
hinzufügen.
@ include ( ' feed::links ' )
Alternativ können Sie diese Klingenkomponente verwenden:
< x-feed-links />
composer test
Weitere Informationen zu den letzten Änderungen finden Sie im CHANGELOG.
Weitere Informationen finden Sie unter BEITRAGEN.
Bitte lesen Sie unsere Sicherheitsrichtlinie zum Melden von Sicherheitslücken.
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie in der Lizenzdatei.