Edit File: GenerateSitemap.php
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Spatie\Sitemap\Sitemap; use Spatie\Sitemap\Tags\Url; use App\Models\Anime; use App\Models\Episode; use App\Models\Genre; use App\Models\Season; use App\Models\Tag; use Carbon\Carbon; class GenerateSitemap extends Command { protected $signature = 'sitemap:generate'; protected $description = 'Generate dynamic sitemap.xml from database and routes'; public function handle() { $sitemap = Sitemap::create(); // ✅ Static routes $sitemap->add(Url::create('/anime/completed')); $sitemap->add(Url::create('/film-list')); $sitemap->add(Url::create('/season/list')); $sitemap->add(Url::create('/genre/list')); $sitemap->add(Url::create('/media-sosial')); // ✅ Anime routes Anime::all()->each(function ($anime) use ($sitemap) { $sitemap->add( Url::create("/anime/{$anime->slug}") ->setLastModificationDate($anime->updated_at ?? Carbon::now()) ); }); // ✅ Episode per anime (dinamis) Anime::with('videos')->get()->each(function ($anime) use ($sitemap) { foreach ($anime->videos as $video) { $sitemap->add( Url::create("/anime/{$anime->slug}/episode/{$video->order}") ->setLastModificationDate($video->updated_at ?? Carbon::now()) ); } }); // ✅ Season show Season::all()->each(function ($season) use ($sitemap) { $sitemap->add( Url::create("/season/{$season->slug}") ->setLastModificationDate($season->updated_at ?? Carbon::now()) ); }); // ✅ Tag show Tag::all()->each(function ($tag) use ($sitemap) { $sitemap->add( Url::create("/tag/{$tag->slug}") ->setLastModificationDate($tag->updated_at ?? Carbon::now()) ); }); // ✅ Genre show Genre::all()->each(function ($genre) use ($sitemap) { $sitemap->add( Url::create("/genre/{$genre->slug}") ->setLastModificationDate($genre->updated_at ?? Carbon::now()) ); }); // ✅ Simpan ke file $sitemap->writeToFile(public_path('sitemap.xml')); $this->info('✅ Sitemap generated to public/sitemap.xml'); } }
Back