This commit is contained in:
146
resources/views/layouts/shop.blade.php
Normal file
146
resources/views/layouts/shop.blade.php
Normal file
@@ -0,0 +1,146 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
@php
|
||||
$siteName = config('seo.site_name', config('app.name', 'PC Shop'));
|
||||
$metaTitleRaw = trim($__env->yieldContent('meta_title'));
|
||||
$metaTitle = $metaTitleRaw !== '' ? "{$metaTitleRaw} - {$siteName}" : config('seo.default_title', $siteName);
|
||||
$metaDescription = trim($__env->yieldContent('meta_description')) ?: config('seo.default_description');
|
||||
$metaKeywords = trim($__env->yieldContent('meta_keywords')) ?: config('seo.default_keywords');
|
||||
$metaCanonical = trim($__env->yieldContent('meta_canonical')) ?: url()->current();
|
||||
$metaOgType = trim($__env->yieldContent('meta_og_type')) ?: 'website';
|
||||
$request = request();
|
||||
$defaultNoIndex = $request->is('admin*')
|
||||
|| $request->routeIs(
|
||||
'favorites.*',
|
||||
'compare.*',
|
||||
'cart.*',
|
||||
'checkout.*',
|
||||
'account*',
|
||||
'login',
|
||||
'login.attempt',
|
||||
'register',
|
||||
'register.store'
|
||||
);
|
||||
$metaRobots = trim($__env->yieldContent('meta_robots')) ?: ($defaultNoIndex ? 'noindex,nofollow' : 'index,follow');
|
||||
$metaImagePath = trim($__env->yieldContent('meta_image')) ?: config('seo.default_image');
|
||||
$metaImage = str_starts_with($metaImagePath, 'http://') || str_starts_with($metaImagePath, 'https://')
|
||||
? $metaImagePath
|
||||
: url($metaImagePath);
|
||||
$metaImageAlt = trim($__env->yieldContent('meta_image_alt')) ?: $metaTitle;
|
||||
$siteUrl = url('/');
|
||||
$companyName = config('shop.company_name', $siteName);
|
||||
$companyDescription = config('shop.company_description', $metaDescription);
|
||||
$companyPhone = trim((string) config('shop.contact_phone', ''));
|
||||
$companyEmail = trim((string) config('shop.contact_email', ''));
|
||||
$companyAddress = trim((string) config('shop.contact_address', ''));
|
||||
$companyTelegram = trim((string) config('shop.contact_telegram', ''));
|
||||
if ($companyTelegram !== '' && str_starts_with($companyTelegram, '@')) {
|
||||
$companyTelegram = 'https://t.me/' . ltrim($companyTelegram, '@');
|
||||
}
|
||||
|
||||
$organizationSchema = [
|
||||
'@context' => 'https://schema.org',
|
||||
'@type' => 'Organization',
|
||||
'name' => $companyName,
|
||||
'url' => $siteUrl,
|
||||
'description' => $companyDescription,
|
||||
];
|
||||
|
||||
if ($companyPhone !== '') {
|
||||
$organizationSchema['telephone'] = $companyPhone;
|
||||
}
|
||||
|
||||
if ($companyEmail !== '') {
|
||||
$organizationSchema['email'] = $companyEmail;
|
||||
}
|
||||
|
||||
if ($companyAddress !== '') {
|
||||
$organizationSchema['address'] = [
|
||||
'@type' => 'PostalAddress',
|
||||
'streetAddress' => $companyAddress,
|
||||
];
|
||||
}
|
||||
|
||||
if ($companyTelegram !== '' && (str_starts_with($companyTelegram, 'http://') || str_starts_with($companyTelegram, 'https://'))) {
|
||||
$organizationSchema['sameAs'] = [$companyTelegram];
|
||||
}
|
||||
|
||||
$websiteSchema = [
|
||||
'@context' => 'https://schema.org',
|
||||
'@type' => 'WebSite',
|
||||
'name' => $siteName,
|
||||
'url' => $siteUrl,
|
||||
'potentialAction' => [
|
||||
'@type' => 'SearchAction',
|
||||
'target' => route('search.index') . '?q={search_term_string}',
|
||||
'query-input' => 'required name=search_term_string',
|
||||
],
|
||||
];
|
||||
@endphp
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{{ $metaTitle }}</title>
|
||||
<meta name="description" content="{{ $metaDescription }}">
|
||||
<meta name="keywords" content="{{ $metaKeywords }}">
|
||||
<meta name="robots" content="{{ $metaRobots }}">
|
||||
<link rel="canonical" href="{{ $metaCanonical }}">
|
||||
<link rel="alternate" hreflang="ru-RU" href="{{ $metaCanonical }}">
|
||||
<link rel="alternate" hreflang="x-default" href="{{ $metaCanonical }}">
|
||||
<meta property="og:type" content="{{ $metaOgType }}">
|
||||
<meta property="og:locale" content="ru_RU">
|
||||
<meta property="og:site_name" content="{{ $siteName }}">
|
||||
<meta property="og:title" content="{{ $metaTitle }}">
|
||||
<meta property="og:description" content="{{ $metaDescription }}">
|
||||
<meta property="og:url" content="{{ $metaCanonical }}">
|
||||
<meta property="og:image" content="{{ $metaImage }}">
|
||||
<meta property="og:image:alt" content="{{ $metaImageAlt }}">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="{{ $metaTitle }}">
|
||||
<meta name="twitter:description" content="{{ $metaDescription }}">
|
||||
<meta name="twitter:image" content="{{ $metaImage }}">
|
||||
|
||||
<link rel="preconnect" href="https://fonts.bunny.net">
|
||||
<link href="https://fonts.bunny.net/css?family=space-grotesk:400,500,600,700" rel="stylesheet" />
|
||||
<link href="https://fonts.bunny.net/css?family=manrope:400,500,600,700" rel="stylesheet" />
|
||||
|
||||
@if (file_exists(public_path('build/manifest.json')) || file_exists(public_path('hot')))
|
||||
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
||||
@endif
|
||||
|
||||
@unless($request->is('admin*'))
|
||||
<script type="application/ld+json">
|
||||
@json($organizationSchema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
@json($websiteSchema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
|
||||
</script>
|
||||
@endunless
|
||||
|
||||
@stack('structured_data')
|
||||
</head>
|
||||
<body class="pc-body">
|
||||
<div class="pc-shell">
|
||||
<x-header />
|
||||
|
||||
<main class="pc-main">
|
||||
@if (session('status'))
|
||||
<div class="pc-alert">{{ session('status') }}</div>
|
||||
@endif
|
||||
@if ($errors->any())
|
||||
<div class="pc-alert pc-alert-error">{{ $errors->first() }}</div>
|
||||
@endif
|
||||
@yield('content')
|
||||
</main>
|
||||
|
||||
@if (!request()->is('admin*'))
|
||||
<x-chat-widget />
|
||||
@endif
|
||||
|
||||
<x-footer />
|
||||
</div>
|
||||
|
||||
@stack('scripts')
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user