feat: implement multilingual support for sitemap and SEO, update structured data, and improve locale middleware configuration
This commit is contained in:
@@ -17,16 +17,35 @@ $favicon_path = setting('site_favicon');
|
||||
}
|
||||
@endphp
|
||||
@php
|
||||
$seo_canonical = $meta['canonical'] ?? url()->current();
|
||||
$seo_canonical = $meta['canonical'] ?? null;
|
||||
if (!$seo_canonical) {
|
||||
$seo_canonical = url()->current();
|
||||
$localeQuery = request()->query('locale') ?? request()->query('lang');
|
||||
if ($localeQuery && function_exists('available_language_codes') && in_array($localeQuery, available_language_codes())) {
|
||||
$seo_canonical .= '?locale=' . $localeQuery;
|
||||
}
|
||||
}
|
||||
$seo_robots = $meta['robots'] ?? 'index, follow';
|
||||
$seo_og_type = $meta['og_type'] ?? 'website';
|
||||
$seo_og_locale = str_replace('_', '-', $meta['locale'] ?? app()->getLocale());
|
||||
|
||||
$activeLanguages = class_exists(\App\Models\Language::class)
|
||||
? \App\Models\Language::where('is_active', true)->get()
|
||||
: collect([]);
|
||||
$currentUrl = url()->current();
|
||||
@endphp
|
||||
<title>{{ $seo_title }}</title>
|
||||
<meta name="description" content="{{ $seo_description }}">
|
||||
<meta name="robots" content="{{ $seo_robots }}">
|
||||
<link rel="canonical" href="{{ $seo_canonical }}">
|
||||
|
||||
@foreach($activeLanguages as $lang)
|
||||
<link rel="alternate" hreflang="{{ $lang->code }}" href="{{ $currentUrl . '?locale=' . $lang->code }}">
|
||||
@endforeach
|
||||
@if($activeLanguages->count() > 0)
|
||||
<link rel="alternate" hreflang="x-default" href="{{ $currentUrl }}">
|
||||
@endif
|
||||
|
||||
<!-- Open Graph / Facebook -->
|
||||
<meta property="og:type" content="{{ $seo_og_type }}">
|
||||
<meta property="og:url" content="{{ $seo_canonical }}">
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
{!! '<' . '?xml version="1.0" encoding="UTF-8"?' . '>' !!}
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
@foreach($urls as $url)
|
||||
<url>
|
||||
<loc>{{ $url['loc'] }}</loc>
|
||||
@if(!empty($url['alternates']))
|
||||
@foreach($url['alternates'] as $alt)
|
||||
<xhtml:link rel="alternate" hreflang="{{ $alt['hreflang'] }}" href="{{ $alt['href'] }}"/>
|
||||
@endforeach
|
||||
@endif
|
||||
<lastmod>{{ $url['lastmod'] }}</lastmod>
|
||||
<changefreq>{{ $url['changefreq'] }}</changefreq>
|
||||
<priority>{{ $url['priority'] }}</priority>
|
||||
|
||||
Reference in New Issue
Block a user