Update (sitemap)

This commit is contained in:
2023-11-29 22:44:55 +08:00
parent d8bf8784a6
commit 3d0873c5af
9 changed files with 118 additions and 1 deletions

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Helpers\FirstParty\SitemapCrawler;
use Spatie\Crawler\CrawlProfiles\CrawlProfile;
use Psr\Http\Message\UriInterface;
class CustomCrawlProfile extends CrawlProfile
{
public function shouldCrawl(UriInterface $url): bool
{
// Check if the host is not 'localhost'
if ($url->getHost() !== 'localhost') {
return false;
}
// Check if there are query parameters in the URL
if ($url->getQuery() !== '') {
return false;
}
// Check if the path is exactly '/'
return $url->getPath() === '/';
}
}

View File

@@ -1,5 +1,6 @@
<?php <?php
use App\Helpers\FirstParty\SitemapCrawler\CustomCrawlProfile;
use GuzzleHttp\RequestOptions; use GuzzleHttp\RequestOptions;
use Spatie\Sitemap\Crawler\Profile; use Spatie\Sitemap\Crawler\Profile;
@@ -52,6 +53,6 @@
* The sitemap generator uses a CrawlProfile implementation to determine * The sitemap generator uses a CrawlProfile implementation to determine
* which urls should be crawled for the sitemap. * which urls should be crawled for the sitemap.
*/ */
'crawl_profile' => Profile::class, 'crawl_profile' => CustomCrawlProfile::class,
]; ];

View File

@@ -0,0 +1,17 @@
<image:image>
@if (! empty($image->url))
<image:loc>{{ url($image->url) }}</image:loc>
@endif
@if (! empty($image->caption))
<image:caption>{{ $image->caption }}</image:caption>
@endif
@if (! empty($image->geo_location))
<image:geo_location>{{ $image->geo_location }}</image:geo_location>
@endif
@if (! empty($image->title))
<image:title>{{ $image->title }}</image:title>
@endif
@if (! empty($image->license))
<image:license>{{ $image->license }}</image:license>
@endif
</image:image>

View File

@@ -0,0 +1,11 @@
<news:news>
<news:publication>
<news:name>{{ $news->name }}</news:name>
<news:language>{{ $news->language }}</news:language>
</news:publication>
<news:title>{{ $news->title }}</news:title>
<news:publication_date>{{ $news->publicationDate->toW3cString() }}</news:publication_date>
@foreach($news->options as $tag => $value)
<news:{{$tag}}>{{$value}}</news:{{$tag}}>
@endforeach
</news:news>

View File

@@ -0,0 +1,6 @@
<?= '<'.'?'.'xml version="1.0" encoding="UTF-8"?>'."\n"; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
@foreach($tags as $tag)
@include('sitemap::' . $tag->getType())
@endforeach
</urlset>

View File

@@ -0,0 +1,6 @@
<?= '<'.'?'.'xml version="1.0" encoding="UTF-8"?>'."\n" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@foreach($tags as $tag)
@include('sitemap::sitemapIndex/' . $tag->getType())
@endforeach
</sitemapindex>

View File

@@ -0,0 +1,8 @@
<sitemap>
@if (! empty($tag->url))
<loc>{{ url($tag->url) }}</loc>
@endif
@if (! empty($tag->lastModificationDate))
<lastmod>{{ $tag->lastModificationDate->format(DateTime::ATOM) }}</lastmod>
@endif
</sitemap>

View File

@@ -0,0 +1,20 @@
<url>
@if (! empty($tag->url))
<loc>{{ url($tag->url) }}</loc>
@endif
@if (count($tag->alternates))
@foreach ($tag->alternates as $alternate)
<xhtml:link rel="alternate" hreflang="{{ $alternate->locale }}" href="{{ url($alternate->url) }}" />
@endforeach
@endif
@if (! empty($tag->lastModificationDate))
<lastmod>{{ $tag->lastModificationDate->format(DateTime::ATOM) }}</lastmod>
@endif
@if (! empty($tag->changeFrequency))
<changefreq>{{ $tag->changeFrequency }}</changefreq>
@endif
<priority>{{ number_format($tag->priority,1) }}</priority>
@each('sitemap::image', $tag->images, 'image')
@each('sitemap::video', $tag->videos, 'video')
@each('sitemap::news', $tag->news, 'news')
</url>

View File

@@ -0,0 +1,23 @@
<video:video>
<video:thumbnail_loc>{{ $video->thumbnailLoc }}</video:thumbnail_loc>
<video:title>{{ $video->title }}</video:title>
<video:description>{{ $video->description }}</video:description>
@if ($video->contentLoc)
<video:content_loc>{{ $video->contentLoc }}</video:content_loc>
@endif
@if ($video->playerLoc)
<video:player_loc>{{ $video->playerLoc }}</video:player_loc>
@endif
@foreach($video->options as $tag => $value)
<video:{{$tag}}>{{$value}}</video:{{$tag}}>
@endforeach
@foreach($video->allow as $tag => $value)
<video:{{$tag}} relationship="allow">{{$value}}</video:{{$tag}}>
@endforeach
@foreach($video->deny as $tag => $value)
<video:{{$tag}} relationship="deny">{{$value}}</video:{{$tag}}>
@endforeach
@foreach($video->tags as $tag)
<video:tag>{{ $tag }}</video:tag>
@endforeach
</video:video>