วิธีสร้าง Sitemap ใน Laravel
Search engine ใช้ sitemap ในการค้นหาและทำดัชนี (index) หน้าเว็บของคุณ Sitemap คือไฟล์ XML ที่จะบอก Google และ Bing ว่ามี URL ใดบ้างบนเว็บไซต์ของคุณ
คุณสามารถสร้าง sitemap ใน Laravel ได้โดยใช้แพ็กเกจ Spatie Sitemap
ทำตามขั้นตอนเหล่านี้เพื่อตั้งค่า
ติดตั้งแพ็กเกจ รันคำสั่งนี้ใน terminal ของคุณ:
composer require spatie/laravel-sitemapสร้าง controller สร้าง controller ใหม่เพื่อจัดการ logic:
php artisan make:controller GenerateSitemapเขียน 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