@php
$seo_title = ($meta['title'] ?? null) ? $meta['title'] . ' - ' . setting('site_name') : setting('seo_meta_title');
$seo_description = $meta['description'] ?? setting('seo_meta_description');
$seo_image = $meta['image'] ?? setting('default_meta_image');
if ($seo_image && !str_starts_with($seo_image, 'http')) {
$seo_image = asset($seo_image);
}
@endphp
@php
$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
{{ $seo_title }}
@foreach($activeLanguages as $lang)
@endforeach
@if($activeLanguages->count() > 0)
@endif
@if(setting('site_name'))
@endif
@if($seo_image)
@endif
@if($seo_image)
@endif
@if(!empty($structuredData))
@endif
@stack('structured-data')
@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
@endif
@if(setting('seo_google_search_console'))
@endif
@if(setting('seo_bing_webmaster'))
@endif
@if(setting('seo_google_analytics_id'))
@endif
@stack('styles')
{{-- Dynamic Header Template or Static Navbar --}}
@php
$finalHeader = null;
// 1. String Başlık Kontrolü: Eğer string geldiyse (örn: "Demo29 Header"), modelini bul
if (isset($headerTemplate) && is_string($headerTemplate)) {
$foundTemplate = \App\Models\HeaderTemplate::where('title', $headerTemplate)
->where('is_active', true)
->first();
if ($foundTemplate) {
$headerTemplate = $foundTemplate;
}
}
// 2. Model Instance Varsa Render Et (En Yüksek Öncelik)
// Kullanıcı template seçtiyse bu çalışır ve renderedHeader'ı ezer.
if (isset($headerTemplate) && $headerTemplate instanceof \App\Models\HeaderTemplate) {
$templateDefaults = $headerTemplate->default_data ?? [];
$templateData = $header_data ?? [];
$mergedData = array_merge($templateDefaults, $templateData);
$model = $page ?? null;
$finalHeader = \App\Services\TemplateService::replacePlaceholders(
$headerTemplate->html_content,
$mergedData,
$model
);
}
// 3. Blade dosyası path'i varsa include et (RenderedHeader'dan ÖNCE kontrol edilmeli)
if (!$finalHeader && isset($header) && $header) {
$finalHeader = view($header)->render();
}
// 4. Eğer yukarıdan sonuç çıkmadıysa ve Controller zaten render ettiyse onu kullan
if (!$finalHeader && isset($renderedHeader) && $renderedHeader) {
$finalHeader = $renderedHeader;
}
@endphp
@if($finalHeader)
{!! $finalHeader !!}
@else
@include('partials.header')
@endif
{{-- Main Content --}}
@yield('content')
{{-- Dynamic Footer Template or Static Footer --}}
@php
$finalFooter = null;
// 1. String Başlık Kontrolü
if (isset($footerTemplate) && is_string($footerTemplate)) {
$foundTemplate = \App\Models\FooterTemplate::where('title', $footerTemplate)
->where('is_active', true)
->first();
if ($foundTemplate) {
$footerTemplate = $foundTemplate;
}
}
// 2. Model Instance Varsa Render Et (En Yüksek Öncelik)
if (isset($footerTemplate) && $footerTemplate instanceof \App\Models\FooterTemplate) {
$templateDefaults = $footerTemplate->default_data ?? [];
$templateData = $footer_data ?? [];
$mergedData = array_merge($templateDefaults, $templateData);
$model = $page ?? null;
$finalFooter = \App\Services\TemplateService::replacePlaceholders(
$footerTemplate->html_content,
$mergedData,
$model
);
}
// 3. Blade dosyası path'i (RenderedFooter'dan ÖNCE)
if (!$finalFooter && isset($footer) && $footer) {
$finalFooter = view($footer)->render();
}
// 4. Controller'dan gelen renderedFooter
if (!$finalFooter && isset($renderedFooter) && !empty(trim($renderedFooter ?? ''))) {
$finalFooter = $renderedFooter;
}
@endphp
@if($finalFooter)
{!! $finalFooter !!}
@else
@include('partials.footer')
@endif
@stack('scripts')