วิธีสร้าง Sitemap ใน Laravel

Search engine ใช้ sitemap ในการค้นหาและทำดัชนี (index) หน้าเว็บของคุณ Sitemap คือไฟล์ XML ที่จะบอก Google และ Bing ว่ามี URL ใดบ้างบนเว็บไซต์ของคุณ

คุณสามารถสร้าง sitemap ใน Laravel ได้โดยใช้แพ็กเกจ Spatie Sitemap

ทำตามขั้นตอนเหล่านี้เพื่อตั้งค่า

  1. ติดตั้งแพ็กเกจ รันคำสั่งนี้ใน terminal ของคุณ: composer require spatie/laravel-sitemap

  2. สร้าง controller สร้าง controller ใหม่เพื่อจัดการ logic: php artisan make:controller GenerateSitemap

  3. เขียน logic เปิด controller ใหม่ของคุณและเพิ่มโค้ดนี้:

namespace App\Http\Controllers;

use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;
use App\Models\Post;

class GenerateSitemap extends Controller
{
public function index()
{
$sitemap = Sitemap::create();

$sitemap->add(
Url::create('/')
->setPriority(1.0)
->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY)
);

Post::with('category')
->where('status', 1)
->latest()
->get()
->each(function ($post) use ($sitemap) {
$sitemap->add(
Url::create($post->category->slug . '/' . $post->slug)
->setLastModificationDate($post->updated_at)
->setPriority(0.9)
->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)
);
});

$sitemap->writeToFile(public_path('sitemap.xml'));

return back()->with('success', 'Sitemap Generated!');
}
}

สิ่งที่โค้ดนี้ทำ:

  • สร้าง object sitemap ใหม่
  • เพิ่มหน้าแรกของคุณโดยกำหนดลำดับความสำคัญ (priority) ไว้สูง
  • วนลูปผ่านโพสต์ต่างๆ ในฐานข้อมูลของคุณ
  • เพิ่ม URL ของทุกโพสต์ลงในไฟล์
  • บันทึกไฟล์ลงในโฟลเดอร์ public ของคุณในชื่อ sitemap.xml

Sitemap ของคุณจะอยู่ที่ yourdomain.com/sitemap.xml

สิ่งนี้จะช่วยให้ search engine ค้นหาเนื้อหาใหม่ของคุณได้อย่างรวดเร็ว

แหล่งที่มา: https://dev.to/mindwarezone/how-to-generate-a-sitemap-in-laravel-a-complete-guide-4go6