ดึง RSS ฟีดมาแสดงใน Laravel

Save Pongsiri
ideagital
Published in
1 min readMay 28, 2018

ใครที่ใช้ Laravel 5 และกำลังหาวิธีดึง RSS ฟีดมาแสดงที่เว็บของเรา วันนี้ผมขอแนะนำแพคเกจ willvincent/feeds ที่ช่วยให้คุณตอบสนองความต้องการนั้นครับ

ติดตั้ง willvincent/feeds

ใช้คำสั่ง composer require ดาวน์โหลดแพจเกจ willvincent/feeds ลงในโปรเจค Laravel 5 ของเราก่อนครับ

composer require willvincent/feeds

แล้วก็เข้าไปเพิ่ม provider ในไฟล์ config/app.php

'providers' => [            // ...        
willvincent\Feeds\FeedsServiceProvider::class,
],

และเพิ่ม faces ลงในส่วนของ aliases ในไฟล์เดียวกัน

'aliases' => [            // ...        
'Feeds' => willvincent\Feeds\Facades\FeedsFacade::class,
],

ก่อนใช้งานเราก็ต้องดึง config ของแพคเกจออกมาก่อนครับ

php artisan vendor:publish --  provider="willvincent\Feeds\FeedsServiceProvider"

เสร็จแล้วจะไฟล์ config/feeds.php กำเนิดเกิดขึ้น (ถ้าใครไม่ขึ้นหรือรันไม่ผ่านให้ลองรันคำสั่งล้างแคชก่อนนะ php artisan config:cache)

การใช้งานใน Controller

เราจะใช้งานด้วยฟังก์ชั่น make() ซึ่ง 3 พารามิเตอร์
- ลิงค์ของ RSS ถ้ามีหลายลิงค์ให้ใส่เป็น array
- ตัวเลขจำนวนฟีดที่แสดงไม่เกินกี่ฟีด
- บังคับอ่านไฟล์ที่ไม่ถูกรูปแบบ RSS ใส่เป็น Boolean

เริ่มด้วยกันเรียกใช้งานคลาสด้วย faces ที่เราเตรียมไว้ส่วนบนๆ ของ controller เราเลยครับ

<?php... 
use Feeds;
class FeedsController extends Controller
{
...
}

โค้ดตัวอย่างนี้ เราจะเขียน method สำหรับอ่านข้อมูลจากลิงค์ RSS มาแปลงเป็น array แล้วส่งต่อไปแสดงผลที่ View ครับ

public function news()
{
$feed = Feeds::make('https://ideagital.com/blog.rss');
$data = array(
'title' => $feed->get_title(),
'permalink' => $feed->get_permalink(),
'items' => $feed->get_items(),
);

return view('feeds', $data);
}

ในส่วนของ views/feeds.blade.php เราจะลูป Feeds จาก controller มาแสดงครับ

<h1><a href="{{ $permalink }}">{{ $title }}</a></h1>  @foreach ($items as $item)    
<div class="item">
<img alt="Image" src="{{ $item->get_enclosure()->link }}">
<h2>
<a href="{{ $item->get_permalink() }}">
{{ $item->get_title() }}
</a>
</h2>
<p>{{ $item->get_description() }}</p> <p> .
<small>Posted on {{ $item->get_date('j F Y | g:i a') }} .
</small>
</p>
</div>
@endforeach

ปล. สามารถดูตัวอย่างผลลัพธ์ของโค้ดด้านบนได้เลยที่หน้า RSS ฟีดของไอเดียจิตอลได้เลยครับ

https://www.ideagital.com/news

Originally published at ideagital.com.

--

--

Save Pongsiri
ideagital

ศิลปินด้านพัฒนาซอฟต์แวร์ มีเป้าหมายคือพัฒนาตัวเองให้ยืดหยุ่นที่สุด ชอบความเรียบง่าย,ดนตรี,กีฬา และแมว