Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 42fcc5759f | |||
| 161d1c86bc |
@@ -12,24 +12,50 @@ class SitemapController extends Controller
|
|||||||
public function index(): Response
|
public function index(): Response
|
||||||
{
|
{
|
||||||
$urls = [];
|
$urls = [];
|
||||||
|
$activeLanguages = [];
|
||||||
|
if (class_exists(\App\Models\Language::class)) {
|
||||||
|
$activeLanguages = \App\Models\Language::where('is_active', true)->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
$getAlternates = function (string $baseUrl) use ($activeLanguages) {
|
||||||
|
$alternates = [];
|
||||||
|
foreach ($activeLanguages as $lang) {
|
||||||
|
$connector = str_contains($baseUrl, '?') ? '&' : '?';
|
||||||
|
$alternates[] = [
|
||||||
|
'hreflang' => $lang->code,
|
||||||
|
'href' => $baseUrl . $connector . 'locale=' . $lang->code,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$alternates[] = [
|
||||||
|
'hreflang' => 'x-default',
|
||||||
|
'href' => $baseUrl,
|
||||||
|
];
|
||||||
|
return $alternates;
|
||||||
|
};
|
||||||
|
|
||||||
// 1. Static & Main Pages
|
// 1. Static & Main Pages
|
||||||
|
$homeUrl = url('/');
|
||||||
$urls[] = [
|
$urls[] = [
|
||||||
'loc' => url('/'),
|
'loc' => $homeUrl,
|
||||||
|
'alternates' => $getAlternates($homeUrl),
|
||||||
'lastmod' => now()->startOfDay()->toAtomString(),
|
'lastmod' => now()->startOfDay()->toAtomString(),
|
||||||
'changefreq' => 'daily',
|
'changefreq' => 'daily',
|
||||||
'priority' => '1.0',
|
'priority' => '1.0',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$blogIndexUrl = route('blog.index');
|
||||||
$urls[] = [
|
$urls[] = [
|
||||||
'loc' => route('blog.index'),
|
'loc' => $blogIndexUrl,
|
||||||
|
'alternates' => $getAlternates($blogIndexUrl),
|
||||||
'lastmod' => now()->startOfDay()->toAtomString(),
|
'lastmod' => now()->startOfDay()->toAtomString(),
|
||||||
'changefreq' => 'weekly',
|
'changefreq' => 'weekly',
|
||||||
'priority' => '0.8',
|
'priority' => '0.8',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$careerIndexUrl = route('career.index');
|
||||||
$urls[] = [
|
$urls[] = [
|
||||||
'loc' => route('career.index'),
|
'loc' => $careerIndexUrl,
|
||||||
|
'alternates' => $getAlternates($careerIndexUrl),
|
||||||
'lastmod' => now()->startOfMonth()->toAtomString(),
|
'lastmod' => now()->startOfMonth()->toAtomString(),
|
||||||
'changefreq' => 'monthly',
|
'changefreq' => 'monthly',
|
||||||
'priority' => '0.5',
|
'priority' => '0.5',
|
||||||
@@ -40,8 +66,10 @@ class SitemapController extends Controller
|
|||||||
->where('is_homepage', false)
|
->where('is_homepage', false)
|
||||||
->get();
|
->get();
|
||||||
foreach ($pages as $page) {
|
foreach ($pages as $page) {
|
||||||
|
$pageUrl = url($page->slug);
|
||||||
$urls[] = [
|
$urls[] = [
|
||||||
'loc' => url($page->slug),
|
'loc' => $pageUrl,
|
||||||
|
'alternates' => $getAlternates($pageUrl),
|
||||||
'lastmod' => $page->updated_at->toAtomString(),
|
'lastmod' => $page->updated_at->toAtomString(),
|
||||||
'changefreq' => 'weekly',
|
'changefreq' => 'weekly',
|
||||||
'priority' => '0.7',
|
'priority' => '0.7',
|
||||||
@@ -52,8 +80,10 @@ class SitemapController extends Controller
|
|||||||
if (class_exists(Blog::class)) {
|
if (class_exists(Blog::class)) {
|
||||||
$posts = Blog::published()->get();
|
$posts = Blog::published()->get();
|
||||||
foreach ($posts as $post) {
|
foreach ($posts as $post) {
|
||||||
|
$postUrl = route('blog.show', $post->slug);
|
||||||
$urls[] = [
|
$urls[] = [
|
||||||
'loc' => route('blog.show', $post->slug),
|
'loc' => $postUrl,
|
||||||
|
'alternates' => $getAlternates($postUrl),
|
||||||
'lastmod' => $post->updated_at->toAtomString(),
|
'lastmod' => $post->updated_at->toAtomString(),
|
||||||
'changefreq' => 'weekly',
|
'changefreq' => 'weekly',
|
||||||
'priority' => '0.6',
|
'priority' => '0.6',
|
||||||
@@ -65,8 +95,10 @@ class SitemapController extends Controller
|
|||||||
if (class_exists(Product::class)) {
|
if (class_exists(Product::class)) {
|
||||||
$products = Product::where('is_active', true)->get();
|
$products = Product::where('is_active', true)->get();
|
||||||
foreach ($products as $product) {
|
foreach ($products as $product) {
|
||||||
|
$productUrl = route('products.show', $product->slug);
|
||||||
$urls[] = [
|
$urls[] = [
|
||||||
'loc' => route('products.show', $product->slug),
|
'loc' => $productUrl,
|
||||||
|
'alternates' => $getAlternates($productUrl),
|
||||||
'lastmod' => $product->updated_at->toAtomString(),
|
'lastmod' => $product->updated_at->toAtomString(),
|
||||||
'changefreq' => 'weekly',
|
'changefreq' => 'weekly',
|
||||||
'priority' => '0.7',
|
'priority' => '0.7',
|
||||||
|
|||||||
@@ -16,10 +16,25 @@ class SetLocale
|
|||||||
*/
|
*/
|
||||||
public function handle(Request $request, Closure $next): Response
|
public function handle(Request $request, Closure $next): Response
|
||||||
{
|
{
|
||||||
// Session'dan locale'i al, yoksa varsayılan dil kodunu kullan
|
// Aktif dilleri veritabanından kontrol et
|
||||||
$locale = session('locale');
|
if (function_exists('available_language_codes')) {
|
||||||
|
$availableLocales = available_language_codes();
|
||||||
|
} else {
|
||||||
|
$availableLocales = ['tr', 'en', 'de', 'ar', 'se', 'ru'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Query parametresinden al, yoksa session'dan al
|
||||||
|
$queryLocale = $request->query('locale') ?? $request->query('lang');
|
||||||
|
$locale = null;
|
||||||
|
|
||||||
|
if ($queryLocale && in_array($queryLocale, $availableLocales)) {
|
||||||
|
$locale = $queryLocale;
|
||||||
|
session(['locale' => $locale]);
|
||||||
|
} else {
|
||||||
|
$locale = session('locale');
|
||||||
|
}
|
||||||
|
|
||||||
// Eğer session'da locale yoksa, varsayılan dil kodunu kullan
|
// Eğer locale hala atanmadıysa varsayılan dil kodunu kullan
|
||||||
if (!$locale) {
|
if (!$locale) {
|
||||||
if (function_exists('default_language_code')) {
|
if (function_exists('default_language_code')) {
|
||||||
$locale = default_language_code();
|
$locale = default_language_code();
|
||||||
@@ -28,14 +43,7 @@ class SetLocale
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Aktif dilleri veritabanından kontrol et
|
// Locale'i aktif diller arasında kontrol et ve ata
|
||||||
if (function_exists('available_language_codes')) {
|
|
||||||
$availableLocales = available_language_codes();
|
|
||||||
} else {
|
|
||||||
$availableLocales = ['tr', 'en'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Locale'i aktif diller arasında kontrol et
|
|
||||||
if (in_array($locale, $availableLocales)) {
|
if (in_array($locale, $availableLocales)) {
|
||||||
App::setLocale($locale);
|
App::setLocale($locale);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -63,10 +63,42 @@ abstract class StructuredData
|
|||||||
$siteName = static::siteName();
|
$siteName = static::siteName();
|
||||||
|
|
||||||
$node = [
|
$node = [
|
||||||
'@type' => 'Organization',
|
'@type' => 'ProfessionalService',
|
||||||
'@id' => $siteUrl . '#organization',
|
'@id' => $siteUrl . '#organization',
|
||||||
'name' => $siteName,
|
'name' => $siteName,
|
||||||
'url' => $siteUrl,
|
'url' => $siteUrl,
|
||||||
|
'priceRange' => '$$',
|
||||||
|
'geo' => [
|
||||||
|
'@type' => 'GeoCoordinates',
|
||||||
|
'latitude' => 37.025704,
|
||||||
|
'longitude' => 37.296559,
|
||||||
|
],
|
||||||
|
'areaServed' => [
|
||||||
|
[
|
||||||
|
'@type' => 'AdministrativeArea',
|
||||||
|
'name' => 'Gaziantep',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'@type' => 'Country',
|
||||||
|
'name' => 'Turkey',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'knowsAbout' => [
|
||||||
|
'Yazılım Geliştirme',
|
||||||
|
'Web Tasarım',
|
||||||
|
'Mobil Uygulama Geliştirme',
|
||||||
|
'E-Ticaret Sistemleri',
|
||||||
|
'SEO Danışmanlığı',
|
||||||
|
'Gaziantep Yazılım Şirketleri'
|
||||||
|
],
|
||||||
|
'openingHoursSpecification' => [
|
||||||
|
[
|
||||||
|
'@type' => 'OpeningHoursSpecification',
|
||||||
|
'dayOfWeek' => ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
|
||||||
|
'opens' => '09:00',
|
||||||
|
'closes' => '18:00',
|
||||||
|
]
|
||||||
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
$logo = setting('site_logo');
|
$logo = setting('site_logo');
|
||||||
@@ -93,6 +125,10 @@ abstract class StructuredData
|
|||||||
$node['address'] = [
|
$node['address'] = [
|
||||||
'@type' => 'PostalAddress',
|
'@type' => 'PostalAddress',
|
||||||
'streetAddress' => $address,
|
'streetAddress' => $address,
|
||||||
|
'addressLocality' => 'Şahinbey',
|
||||||
|
'addressRegion' => 'Gaziantep',
|
||||||
|
'postalCode' => '27190',
|
||||||
|
'addressCountry' => 'TR',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +1,38 @@
|
|||||||
@import url(https://fonts.googleapis.com/css2?family=IBM+Plex+Serif:ital,wght@1,300;1,400;1,500;1,600;1,700);
|
@import url(https://fonts.googleapis.com/css2?family=IBM+Plex+Serif:ital,wght@1,300;1,400;1,500;1,600;1,700&display=swap);
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Space Grotesk';
|
font-family: 'Space Grotesk';
|
||||||
src: url(../../fonts/space/SpaceGrotesk-SemiBold.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-SemiBold.woff) format('woff');
|
src: url(../../fonts/space/SpaceGrotesk-SemiBold.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-SemiBold.woff) format('woff');
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Space Grotesk';
|
font-family: 'Space Grotesk';
|
||||||
src: url(../../fonts/space/SpaceGrotesk-Light.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-Light.woff) format('woff');
|
src: url(../../fonts/space/SpaceGrotesk-Light.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-Light.woff) format('woff');
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Space Grotesk';
|
font-family: 'Space Grotesk';
|
||||||
src: url(../../fonts/space/SpaceGrotesk-Bold.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-Bold.woff) format('woff');
|
src: url(../../fonts/space/SpaceGrotesk-Bold.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-Bold.woff) format('woff');
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Space Grotesk';
|
font-family: 'Space Grotesk';
|
||||||
src: url(../../fonts/space/SpaceGrotesk-Medium.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-Medium.woff) format('woff');
|
src: url(../../fonts/space/SpaceGrotesk-Medium.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-Medium.woff) format('woff');
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Space Grotesk';
|
font-family: 'Space Grotesk';
|
||||||
src: url(../../fonts/space/SpaceGrotesk-Regular.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-Regular.woff) format('woff');
|
src: url(../../fonts/space/SpaceGrotesk-Regular.woff2) format('woff2'), url(../../fonts/space/SpaceGrotesk-Regular.woff) format('woff');
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
* {
|
* {
|
||||||
word-spacing: normal !important
|
word-spacing: normal !important
|
||||||
|
|||||||
@@ -3,70 +3,70 @@
|
|||||||
src: url(../../fonts/urbanist/Urbanist-BoldItalic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-BoldItalic.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-BoldItalic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-BoldItalic.woff) format('woff');
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-SemiBoldItalic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-SemiBoldItalic.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-SemiBoldItalic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-SemiBoldItalic.woff) format('woff');
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-Medium.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Medium.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-Medium.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Medium.woff) format('woff');
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-MediumItalic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-MediumItalic.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-MediumItalic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-MediumItalic.woff) format('woff');
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-SemiBold.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-SemiBold.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-SemiBold.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-SemiBold.woff) format('woff');
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-Italic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Italic.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-Italic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Italic.woff) format('woff');
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-Regular.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Regular.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-Regular.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Regular.woff) format('woff');
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-LightItalic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-LightItalic.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-LightItalic.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-LightItalic.woff) format('woff');
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-Light.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Light.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-Light.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Light.woff) format('woff');
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Urbanist;
|
font-family: Urbanist;
|
||||||
src: url(../../fonts/urbanist/Urbanist-Bold.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Bold.woff) format('woff');
|
src: url(../../fonts/urbanist/Urbanist-Bold.woff2) format('woff2'), url(../../fonts/urbanist/Urbanist-Bold.woff) format('woff');
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: block
|
font-display: swap;
|
||||||
}
|
}
|
||||||
* {
|
* {
|
||||||
word-spacing: normal !important
|
word-spacing: normal !important
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
src:url(Unicons.woff2) format("woff2"),url(Unicons.woff) format("woff");
|
src:url(Unicons.woff2) format("woff2"),url(Unicons.woff) format("woff");
|
||||||
font-weight:400;
|
font-weight:400;
|
||||||
font-style:normal;
|
font-style:normal;
|
||||||
font-display:block
|
font-display:swap;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family:Custom;
|
font-family:Custom;
|
||||||
src:url(../custom/Custom.woff2) format("woff2"),url(../custom/Custom.woff) format("woff");
|
src:url(../custom/Custom.woff2) format("woff2"),url(../custom/Custom.woff) format("woff");
|
||||||
font-weight:400;
|
font-weight:400;
|
||||||
font-style:normal;
|
font-style:normal;
|
||||||
font-display:block
|
font-display:swap;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
google-site-verification: googlef1M6GQLxVA5g7IaVY6kMQCoIrgADR6HjrOZu79CrXYc.html
|
||||||
+1
-31862
File diff suppressed because one or more lines are too long
+5
-1
@@ -1,2 +1,6 @@
|
|||||||
User-agent: *
|
User-agent: *
|
||||||
Disallow:
|
Allow: /
|
||||||
|
Disallow: /admin/
|
||||||
|
Disallow: /stajyer/admin/
|
||||||
|
|
||||||
|
Sitemap: https://truncgil.com/sitemap.xml
|
||||||
|
|||||||
@@ -14,7 +14,8 @@
|
|||||||
<link rel="preload" href="{{ asset('html/assets/css/fonts/urbanist.css') }}" as="style" onload="this.rel='stylesheet'">
|
<link rel="preload" href="{{ asset('html/assets/css/fonts/urbanist.css') }}" as="style" onload="this.rel='stylesheet'">
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=translate">
|
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=translate&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||||
|
<noscript><link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=translate&display=swap" rel="stylesheet"></noscript>
|
||||||
@stack('styles')
|
@stack('styles')
|
||||||
<style>
|
<style>
|
||||||
.navbar.navbar-light.fixed .btn:not(.btn-expand):not(.btn-gradient) {
|
.navbar.navbar-light.fixed .btn:not(.btn-expand):not(.btn-gradient) {
|
||||||
|
|||||||
@@ -17,16 +17,35 @@ $favicon_path = setting('site_favicon');
|
|||||||
}
|
}
|
||||||
@endphp
|
@endphp
|
||||||
@php
|
@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_robots = $meta['robots'] ?? 'index, follow';
|
||||||
$seo_og_type = $meta['og_type'] ?? 'website';
|
$seo_og_type = $meta['og_type'] ?? 'website';
|
||||||
$seo_og_locale = str_replace('_', '-', $meta['locale'] ?? app()->getLocale());
|
$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
|
@endphp
|
||||||
<title>{{ $seo_title }}</title>
|
<title>{{ $seo_title }}</title>
|
||||||
<meta name="description" content="{{ $seo_description }}">
|
<meta name="description" content="{{ $seo_description }}">
|
||||||
<meta name="robots" content="{{ $seo_robots }}">
|
<meta name="robots" content="{{ $seo_robots }}">
|
||||||
<link rel="canonical" href="{{ $seo_canonical }}">
|
<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 -->
|
<!-- Open Graph / Facebook -->
|
||||||
<meta property="og:type" content="{{ $seo_og_type }}">
|
<meta property="og:type" content="{{ $seo_og_type }}">
|
||||||
<meta property="og:url" content="{{ $seo_canonical }}">
|
<meta property="og:url" content="{{ $seo_canonical }}">
|
||||||
@@ -58,6 +77,15 @@ $favicon_path = setting('site_favicon');
|
|||||||
|
|
||||||
<link rel="icon" href="{{ $favicon_path ? (str_starts_with($favicon_path, 'http') ? $favicon_path : asset($favicon_path)) : asset('assets/img/favicon.png') }}">
|
<link rel="icon" href="{{ $favicon_path ? (str_starts_with($favicon_path, 'http') ? $favicon_path : asset($favicon_path)) : asset('assets/img/favicon.png') }}">
|
||||||
@stack('head')
|
@stack('head')
|
||||||
|
@if(request()->routeIs('homepage'))
|
||||||
|
@php
|
||||||
|
$hero_bg_preload = setting('hero_bg') ?: './assets/img/photos/bg16.webp';
|
||||||
|
if ($hero_bg_preload && !str_starts_with($hero_bg_preload, 'http')) {
|
||||||
|
$hero_bg_preload = asset($hero_bg_preload);
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
<link rel="preload" href="{{ $hero_bg_preload }}" as="image" fetchpriority="high">
|
||||||
|
@endif
|
||||||
<link rel="stylesheet" href="{{ asset('html/style.css') }}">
|
<link rel="stylesheet" href="{{ asset('html/style.css') }}">
|
||||||
<link rel="preload" href="{{ asset('assets/css/icon.css') }}" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
<link rel="preload" href="{{ asset('assets/css/icon.css') }}" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||||
<noscript><link rel="stylesheet" href="{{ asset('assets/css/icon.css') }}"></noscript>
|
<noscript><link rel="stylesheet" href="{{ asset('assets/css/icon.css') }}"></noscript>
|
||||||
@@ -70,8 +98,10 @@ $favicon_path = setting('site_favicon');
|
|||||||
<link rel="preload" href="{{ asset('assets/css/fonts/space.css') }}" as="style" onload="this.rel='stylesheet'">
|
<link rel="preload" href="{{ asset('assets/css/fonts/space.css') }}" as="style" onload="this.rel='stylesheet'">
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Caveat:wght@600&family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Caveat:wght@600&family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=translate">
|
<noscript><link href="https://fonts.googleapis.com/css2?family=Caveat:wght@600&family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap" rel="stylesheet"></noscript>
|
||||||
|
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=translate&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||||
|
<noscript><link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=translate&display=swap" rel="stylesheet"></noscript>
|
||||||
|
|
||||||
<!-- Site Verification -->
|
<!-- Site Verification -->
|
||||||
@if(setting('seo_google_search_console'))
|
@if(setting('seo_google_search_console'))
|
||||||
|
|||||||
@@ -1,8 +1,14 @@
|
|||||||
{!! '<' . '?xml version="1.0" encoding="UTF-8"?' . '>' !!}
|
{!! '<' . '?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)
|
@foreach($urls as $url)
|
||||||
<url>
|
<url>
|
||||||
<loc>{{ $url['loc'] }}</loc>
|
<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>
|
<lastmod>{{ $url['lastmod'] }}</lastmod>
|
||||||
<changefreq>{{ $url['changefreq'] }}</changefreq>
|
<changefreq>{{ $url['changefreq'] }}</changefreq>
|
||||||
<priority>{{ $url['priority'] }}</priority>
|
<priority>{{ $url['priority'] }}</priority>
|
||||||
|
|||||||
Reference in New Issue
Block a user