24 lines
992 B
PHP
24 lines
992 B
PHP
<?php
|
|
|
|
namespace Modules\Sitemap\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Response;
|
|
use Modules\Blog\Models\Blog;
|
|
use Modules\News\Models\News;
|
|
use Modules\Pages\Models\Page;
|
|
|
|
final class SitemapController extends Controller
|
|
{
|
|
public function index(): Response
|
|
{
|
|
$urls = collect();
|
|
$urls->push(['loc' => url('/'), 'updated_at' => now()]);
|
|
Page::query()->where('status', 'published')->get()->each(fn ($r) => $urls->push(['loc' => route('pages.public.show', $r->slug), 'updated_at' => $r->updated_at]));
|
|
Blog::published()->get()->each(fn ($r) => $urls->push(['loc' => route('blog.public.show', $r->slug), 'updated_at' => $r->updated_at]));
|
|
News::published()->get()->each(fn ($r) => $urls->push(['loc' => route('news.public.show', $r->slug), 'updated_at' => $r->updated_at]));
|
|
|
|
return response()->view('sitemap::index', compact('urls'))->header('Content-Type', 'application/xml; charset=UTF-8');
|
|
}
|
|
}
|