توفر هذه الحزمة طريقة سهلة لإنشاء موجز لتطبيق Laravel الخاص بك. التنسيقات المدعومة هي RSS وAtom وJSON. لا يوجد أي ترميز مطلوب تقريبًا من جانبك. ما عليك سوى اتباع تعليمات التثبيت، وتحديث ملف التكوين الخاص بك، وستكون جاهزًا للبدء.
Spatie هي وكالة تصميم مواقع الإنترنت مقرها في أنتويرب، بلجيكا. ستجد نظرة عامة على جميع مشاريعنا مفتوحة المصدر على موقعنا.
نحن نستثمر الكثير من الموارد في إنشاء أفضل الحزم مفتوحة المصدر في فئتها. يمكنك دعمنا عن طريق شراء أحد منتجاتنا المدفوعة.
نحن نقدر بشدة إرسالك لنا بطاقة بريدية من مسقط رأسك، مع ذكر الحزمة (الحزم) التي تستخدمها. ستجد عنواننا على صفحة الاتصال لدينا. ننشر جميع البطاقات البريدية المستلمة على جدار البطاقات البريدية الافتراضية لدينا.
يمكنك تثبيت الحزمة عبر الملحن:
composer require spatie/laravel-feed
قم بتسجيل المسارات التي سيتم عرض الخلاصات عليها باستخدام feeds
-ماكرو.
// 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
s توفر هذه الحزمة، خارج الصندوق، طريقة عرض feed::feed
التي تعرض تفاصيل الخلاصات الخاصة بك.
ومع ذلك، يمكنك استخدام طريقة عرض مخصصة لكل خلاصة من خلال توفير مفتاح view
داخل تكوين الخلاصة لديك.
في المثال التالي، نحن نستخدم موجز 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 الخاصة بك والتي تبدو كما يلي:
< link rel =" alternate " type =" application/atom+xml " title =" News " href =" /feed " >
يمكنك إضافة هذا إلى <head>
الخاص بك من خلال عرض جزئي.
@ include ( ' feed::links ' )
كبديل يمكنك استخدام مكون الشفرة هذا:
< x-feed-links />
composer test
الرجاء مراجعة سجل التغيير للحصول على مزيد من المعلومات حول ما تغير مؤخرًا.
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
يرجى مراجعة سياستنا الأمنية حول كيفية الإبلاغ عن الثغرات الأمنية.
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.