Membuat RSS Feed di Laravel tanpa Package

rss feed laravel

Pengantar

RSS adalah singkatan dari Really Simple Syndication dan merupakan feed yang mengembalikan informasi dalam format XML.

Memiliki feed RSS akan memungkinkan pengguna melacak posting terbaru di situs web kamu dengan mudah.

Kamu dapat menambahkan RSS feed ke Aplikasi Laravel dengan menggunakan paket feed laravel. Namun, pada tutorial ini, akan ditunjukan cara melakukannya dengan mudah tanpa menambahkan keseluruhan paket!

Yang diperlukan

Untuk memulai, yang kamu butuhin hanyalah aplikasi Laravel.

Kemudian Kamu juga membutuhkan model yang akan kamu gunakan. Untuk contoh ini, akan menggunakan model Post yang telah dibuat. Kalau belum tahu caranya, pake printah ini:

php artisan make:model Post
Membuat Controller RSS

Mari kita mulai dengan membuat controller baru bernama RssFeedController. Kamu dapat melakukannya dengan perintah php artisan berikut :

php artisan make:controller RssFeedController

Perintah tersebut akan membuat controller baru, dan itu akan ditambahkan ke direktori app/Http/Controllers/RssFeedController.php

Setelah itu, gunakan editor teks favorit kamu, buka file dan tambahkan method baru yang disebut feed, kaya gini ni:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Models\Post;

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');

    }
}

Nah, dengan itu controller kita sudah selesai. Selanjutnya, kita akan membuat tampilan Blade-nya.

Tampilan Blade

Mari kita mulai dengan membuat folder bernama rss di dalam resources/views/folder kita :

mkdir resources/views/rss

Kemudian di folder itu, buat file bernama feed.blade.php

resources/views/rss/feed.blade.php

Kemudian tambahkan konten berikut, pada file feed.blade.php

<?=
'<?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>

Catatan: pastikan untuk memperbarui <title>dan deskripsi sesuaikan dengan situs kamu!

Dengan itu, kita sudah mendefinisikan struktur XML feed RSS, dan di dalamnya kita menggunakan foreach loop untuk mencetak semua data post.

Mengkonfigurasi Route

Terakhir, kita perlu membuat route baru dan memetakannya ke controller RSS kita. Untuk melakukan itu, buka file routes/web.php dan tambahkan baris berikut:

Route::get('feed', '[email protected]');

Dengan ditambahkan itu, ketika seseorang berkunjung ke websitekamu.com/feed, mereka akan mendapatkan tanggapan RSS feed kamu!

Contoh RSS Feed https://hendroprasetyo.com/feed/

Kesimpulan:

Sederhana tapi cukup banyak, ya. Sekarang kamu sudah memiliki RSS feed yang berfungsi penuh di situs Laravel kamu!

Tentu aja, kalau kamu lebih suka menghemat waktu, daripada menambahkan sendiri fungsionalitas RSS, kamu bisa menggunakan paket laravel-feed! Semoga ini membantu, ya!

Leave a Reply

Your email address will not be published. Required fields are marked *

× Mau Merchandise? bisa, Chat WA yak