RSS , Really Simple Syndication'ın kısaltmasıdır ve XML biçiminde bilgi döndüren bir feed yani beslemedir. Bir RSS beslemesine sahip olmak, kullanıcılarınızın web sitenizdeki en son gönderileri kolayca izlemelerine olanak tanır. 

Ancak bir RSS beslemesine sahip olmak, http://daily.dev/ veya http://dev.to gibi hizmetlere kaydolmanıza ve en son makalelerinizi oraya otomatik olarak göndermenize de olanak tanır .

laravel-feed kullanarak laravel Uygulamaya bir RSS beslemesi ekleyebilirsiniz. Bununla birlikte, bu eğitimde, bütün bir paketi eklemeden bunu nasıl kolayca yapacağınızı göstereceğim!

Başlamak için tek ihtiyacınız olan bir Laravel uygulamasıdır ki buda şuanda sizde var olarak kabul ediyorum. 
Ayrıca birlikte çalışacağınız bir modele de ihtiyacınız olacak. Bu örnek için, Post Laravel Voyager ile varsayılan olarak gelen modelimi kullanacağım. Ve Laravel Voyager blogumdaki en son gönderileri RSS Feed olarak göstereceğiz.

Evet şimdi başlayalım; 

RssFeedController Adlı yeni bir denetleyici oluşturarak başlayalım. Bunu aşağıdaki php artisan komutla yapabilirsiniz:

php artisan make:controller RssFeedController

Bu sizin için yeni bir kontrolör yaratacak ve onu app/Http/Controllers/RssFeedController.php dizine ekleyecektir.

Bundan sonra, favori metin düzenleyicinizi kullanarak dosyayı açın ve aşağıdaki kodu ekleyelim. 

<?php

namespace AppHttpControllers;
use IlluminateHttpRequest;
use TCGVoyagerModelsPost;

class RssFeedController extends Controller
{
    public function feed()
    {
        $posts = Post::where('status', 'published')->
        orderBy('created_at', 'desc')->
        limit(50)->get();
        return response()->view('rss.feed', compact('posts'))->header('Content-Type', 'application/xml');

    }
}
?>

Yukarıdaki kod ile yaptığımız işlemleri özetleyecek olursak; 

  • use TCGVoyagerModelsPost;: Öncelikle Voyager Post modelini dahil ediyoruz. Voyager kullanmıyorsanız, buna göre uyarladığınızdan emin olun.
  • public function index(): Ardından yöntemin adını belirtin
  • $posts = Post::where('status', 'published'): Daha sonra $posts tüm published gönderilerimizi içeren yeni bir değişken tanımlıyoruz
  • orderBy('created_at', 'desc'): En yeniyi en üste alabilmek için gönderileri sıralıyoruz
  • limit(50)->get();: burada sonuçları yalnızca 50 ile sınırlıyoruz, böylece çok fazla gönderi geri almayız
  • return response()->view('rss.feed', compact('posts')): Burada gönderi sonuçlarını görüşümüze rss/feed.blade.php döndürüyoruz.

Controller olarak dosyamız hazır şimdi Blade ile template kısmına geçelim; 

resources/views/ Klasörümüzün rss içinde adlı bir klasör oluşturarak başlayalım:

mkdir resources/views/rss

Sonra bu klasörde feed.blade.php adla bir dosya oluşturun: 

resources/views/rss/feed.blade.php

Ardından aşağıdaki içeriği ekleyin:

<?=
'<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL
?>
<rss version="2.0">
    <channel>
        <title><![CDATA[ DevDojo ]]></title>
        <link><![CDATA[ https://your-website.com/feed ]]></link>
        <description><![CDATA[ Your website description ]]></description>
        <language>en</language>
        <pubDate>{{ now() }}</pubDate>

        @foreach($posts as $post)
            <item>
                <title><![CDATA[{{ $post->title }}]]></title>
                <link>{{ $post->slug }}</link>
                <description><![CDATA[{!! $post->body !!}]]></description>
                <category>{{ $post->category }}</category>
                <author><![CDATA[{{ $post->user->username  }}]]></author>
                <guid>{{ $post->id }}</guid>
                <pubDate>{{ $post->created_at->toRssString() }}</pubDate>
            </item>
        @endforeach
    </channel>
</rss>

Bununla, RSS besleme XML yapımızı tanımlıyoruz ve içinde foreach ile tüm öğreticilerimizi yazdırmak için bir döngü kullanıyoruz.
Laravel Voyager kullanmıyorsanız, $post-> özellikleri modelinize uyacak şekilde ayarladığınızdan emin olun!

Evet Controller ve View kısımları bitti şimdi route kısmını da halledelim; 
Son olarak, yeni bir route oluşturmalı ve bunu RSS Kontrolcümüzle eşleştirmeliyiz.

Bunu yapmak için routes/web.php dosyayı açın ve aşağıdaki satırı ekleyin:

Route::get('feed', 'RssFeedController@feed');

Evet işte sonuna geldik artık herşey yolunda gittiyse, birisi ziyaret ettiğinde yoursite.com/feed, RSS Feed yanıtını alacaktır. 

Sonuç olarak çok fazla paket kullanmadan kendi Laravel RSS FEED uygulamamızı yaptık ancak bunun yerine en başta da belirttiğimiz gibi bir  laravel-feed Laravel Paketini kullanabilirsiniz.

Umarım bu yardımcı olur!