ดึง RSS ฟีดมาแสดงใน Laravel
ใครที่ใช้ 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 ฟีดของไอเดียจิตอลได้เลยครับ
Originally published at ideagital.com.