77 lines
No EOL
3.1 KiB
PHP
77 lines
No EOL
3.1 KiB
PHP
<div class="flux-cms-page" data-page-id="{{ $page->id }}">
|
|
{{-- SEO Meta Tags (if not handled by layout) --}}
|
|
@pushOnce('meta')
|
|
<title>{{ $page->getSeoTitle() }}</title>
|
|
<meta name="description" content="{{ $page->getSeoDescription() }}">
|
|
|
|
@if($page->meta_keywords)
|
|
<meta name="keywords" content="{{ $page->meta_keywords }}">
|
|
@endif
|
|
|
|
{{-- Open Graph --}}
|
|
<meta property="og:title" content="{{ $page->getSeoTitle() }}">
|
|
<meta property="og:description" content="{{ $page->getSeoDescription() }}">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:url" content="{{ $page->getUrl() }}">
|
|
|
|
{{-- Twitter Card --}}
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="{{ $page->getSeoTitle() }}">
|
|
<meta name="twitter:description" content="{{ $page->getSeoDescription() }}">
|
|
@endPushOnce
|
|
|
|
{{-- Page Content --}}
|
|
<div class="space-y-8">
|
|
@forelse($components as $component)
|
|
@if($component->is_active)
|
|
<div class="flux-cms-component"
|
|
data-component-id="{{ $component->id }}"
|
|
data-component-type="{{ $component->component_type }}"
|
|
@if($component->settings['css_classes'] ?? false)
|
|
class="{{ $component->settings['css_classes'] }}"
|
|
@endif>
|
|
|
|
{{-- Render the actual Livewire component --}}
|
|
@livewire($component->component_type, [
|
|
'content' => $component->content,
|
|
'settings' => $component->settings,
|
|
'componentId' => $component->id
|
|
], key('component-'.$component->id))
|
|
</div>
|
|
@endif
|
|
@empty
|
|
{{-- Empty state for pages with no components --}}
|
|
<div class="text-center py-16">
|
|
<div class="max-w-md mx-auto">
|
|
<h1 class="text-3xl font-bold text-gray-900 mb-4">
|
|
{{ $page->title }}
|
|
</h1>
|
|
@if($page->content)
|
|
<div class="prose prose-lg text-gray-600">
|
|
{!! $page->content !!}
|
|
</div>
|
|
@else
|
|
<p class="text-gray-600">
|
|
This page doesn't have any content components yet.
|
|
</p>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endforelse
|
|
</div>
|
|
|
|
{{-- JSON-LD Structured Data --}}
|
|
@pushOnce('structured-data')
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "WebPage",
|
|
"name": "{{ $page->getSeoTitle() }}",
|
|
"description": "{{ $page->getSeoDescription() }}",
|
|
"url": "{{ $page->getUrl() }}",
|
|
"dateModified": "{{ $page->updated_at->toISOString() }}",
|
|
"inLanguage": "{{ app()->getLocale() }}"
|
|
}
|
|
</script>
|
|
@endPushOnce
|
|
</div> |