Add Landing Page Section and Update Product Schema: Introduced a new LandingPageSection class to manage the layout and fields for the product landing page. Updated the ProductForm to include this new section, enhancing the product management interface. Added migration for landing_page_data in the products table and implemented localization for new fields in English and Turkish language files. Created a new landing Blade view to render the landing page dynamically, improving user experience and modularity.

This commit is contained in:
Ümit Tunç
2026-01-02 20:58:18 +03:00
parent 89eb9f5c4e
commit 97092dd793
10 changed files with 720 additions and 13 deletions
+81 -8
View File
@@ -16,6 +16,7 @@ $favicon_path = setting('site_favicon');
<link rel="stylesheet" href="{{ asset('assets/css/plugins.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/colors/grape.css') }}">
<link rel="preload" href="{{ asset('assets/css/fonts/urbanist.css') }}" as="style" onload="this.rel='stylesheet'">
<link rel="preload" href="{{ asset('assets/css/fonts/space.css') }}" as="style" onload="this.rel='stylesheet'">
<style>
<?php echo setting('custom_css') ?>
@@ -24,21 +25,93 @@ $favicon_path = setting('site_favicon');
</head>
<body>
{{-- Dynamic Header Template or Static Navbar --}}
@if(isset($header) && $header)
@include($header)
@elseif(isset($renderedHeader) && $renderedHeader)
{!! $renderedHeader !!}
@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 --}}
@if(isset($footer) && $footer)
@include($footer)
@elseif(isset($renderedFooter) && !empty(trim($renderedFooter)))
{!! $renderedFooter !!}
@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