background

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

6 months ago ◦ 703 Views

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

ดึง 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 เราเลยครับ

...
use Feeds;
class FeedsController extends Controller
{     ... }
    

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

    public function news()
    {
        $feed = Feeds::make('https://www.thaiware.com/rss/rss_latestPost_news.php');
        $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 



#laravel #php #tutorial #rss

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