48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Spatie\Sitemap\Sitemap;
|
|
use Spatie\Sitemap\Tags\Url;
|
|
|
|
use App\Models\Post;
|
|
use App\Models\Category;
|
|
use App\Models\User;
|
|
|
|
class SitemapController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$sitemap = Sitemap::create();
|
|
|
|
$sitemap->add(
|
|
Url::create('/')
|
|
->setPriority(1.0)
|
|
->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY)
|
|
);
|
|
|
|
$sitemap->add(
|
|
Url::create('/contact')
|
|
->setPriority(0.8)
|
|
->setChangeFrequency(Url::CHANGE_FREQUENCY_MONTHLY)
|
|
);
|
|
|
|
// Nur Posts
|
|
$posts = Post::where('published', true)->get(); // falls du ein Feld dafür hast
|
|
foreach ($posts as $post) {
|
|
$url = route('read_post', $post->slug);
|
|
|
|
$sitemap->add(
|
|
Url::create($url)
|
|
->setPriority(0.7)
|
|
->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)
|
|
->setLastModificationDate($post->updated_at)
|
|
);
|
|
}
|
|
|
|
return response($sitemap->render(), 200)
|
|
->header('Content-Type', 'application/xml');
|
|
}
|
|
}
|