2026-05-30 11:23:24 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
|
|
|
|
|
|
use App\Models\Game;
|
|
|
|
|
use App\Models\User;
|
|
|
|
|
use Illuminate\Console\Command;
|
|
|
|
|
use Spatie\Sitemap\Sitemap;
|
|
|
|
|
use Spatie\Sitemap\Tags\Url;
|
|
|
|
|
|
|
|
|
|
class GenerateSitemapCommand extends Command
|
|
|
|
|
{
|
|
|
|
|
protected $signature = 'sitemap:generate';
|
|
|
|
|
protected $description = 'Generate the sitemap.xml file';
|
|
|
|
|
|
|
|
|
|
public function handle(): int
|
|
|
|
|
{
|
|
|
|
|
$sitemap = Sitemap::create()
|
|
|
|
|
->add(Url::create('/')->setPriority(1.0)->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY))
|
|
|
|
|
->add(Url::create('/games')->setPriority(0.9)->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY))
|
|
|
|
|
->add(Url::create('/top-rated')->setPriority(0.8)->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY))
|
|
|
|
|
->add(Url::create('/new-releases')->setPriority(0.8)->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY));
|
|
|
|
|
|
|
|
|
|
Game::select('slug', 'updated_at')->chunk(500, function ($games) use ($sitemap) {
|
|
|
|
|
foreach ($games as $game) {
|
|
|
|
|
$sitemap->add(
|
|
|
|
|
Url::create("/games/{$game->slug}")
|
|
|
|
|
->setLastModificationDate($game->updated_at)
|
|
|
|
|
->setPriority(0.7)
|
|
|
|
|
->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
User::where('is_private', false)
|
2026-05-31 16:14:40 +03:00
|
|
|
->select('slug', 'updated_at')
|
2026-05-30 11:23:24 +03:00
|
|
|
->chunk(500, function ($users) use ($sitemap) {
|
|
|
|
|
foreach ($users as $user) {
|
|
|
|
|
$sitemap->add(
|
2026-05-31 16:14:40 +03:00
|
|
|
Url::create("/users/{$user->slug}")
|
2026-05-30 11:23:24 +03:00
|
|
|
->setLastModificationDate($user->updated_at)
|
|
|
|
|
->setPriority(0.5)
|
|
|
|
|
->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$sitemap->writeToFile(public_path('sitemap.xml'));
|
|
|
|
|
|
|
|
|
|
$this->info('Sitemap generated at public/sitemap.xml');
|
|
|
|
|
|
|
|
|
|
return self::SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
}
|