@php // Garantir que $seoData sempre existe if (!isset($seoData) || !is_array($seoData)) { $seoData = []; } // Valores padrão de SEO $siteName = config('app.name', 'Portal do Holanda'); $siteUrl = config('app.url', url('/')); $defaultImage = asset('/assets/images/logo-topo-ph.png'); // Obter dados de SEO ou usar padrões $seoTitle = $seoData['title'] ?? $siteName; $seoDescription = $seoData['description'] ?? 'Portal de notícias e conteúdo'; $seoKeywords = $seoData['keywords'] ?? ''; $seoImage = !empty($seoData['image']) ? (str_starts_with($seoData['image'], 'http') ? $seoData['image'] : url($seoData['image'])) : $defaultImage; $seoUrl = $seoData['url'] ?? url()->current(); $seoAuthor = $seoData['author'] ?? ''; $seoType = $seoData['type'] ?? 'website'; $seoPublishedTime = $seoData['published_time'] ?? null; $seoModifiedTime = $seoData['modified_time'] ?? null; $seoSection = $seoData['section'] ?? ''; $seoTags = is_array($seoData['tags'] ?? null) ? $seoData['tags'] : []; $seoCanonical = $seoData['canonical'] ?? $seoUrl; $seoRobots = $seoData['robots'] ?? 'index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'; $seoLocale = $seoData['locale'] ?? 'pt_BR'; $seoAlternateLocale = is_array($seoData['alternate_locale'] ?? null) ? $seoData['alternate_locale'] : []; @endphp {{-- SEO Meta Tags --}} {{ $seoTitle }} @if ($seoKeywords) @endif {{-- Canonical URL --}} {{-- Open Graph / Facebook --}} @if ($seoPublishedTime) @endif @if ($seoModifiedTime) @endif @if ($seoAuthor) @endif @if ($seoSection) @endif @foreach ($seoTags as $tag) @endforeach @foreach ($seoAlternateLocale as $altLocale) @endforeach {{-- Twitter Card --}} @if ($seoAuthor) @endif @if ($seoPublishedTime) @endif {{-- RSS Feeds --}} {{-- Schema.org JSON-LD --}} @if ($seoType === 'article') @php $schemaArticle = [ '@context' => 'https://schema.org', '@type' => 'Article', 'headline' => $seoTitle, 'description' => $seoDescription, 'image' => $seoImage, 'url' => $seoUrl, 'author' => [ '@type' => 'Person', 'name' => $seoAuthor ?: $siteName, ], 'publisher' => [ '@type' => 'Organization', 'name' => $siteName, 'logo' => [ '@type' => 'ImageObject', 'url' => $defaultImage, ], ], ]; if ($seoPublishedTime) { $schemaArticle['datePublished'] = $seoPublishedTime; } if ($seoModifiedTime) { $schemaArticle['dateModified'] = $seoModifiedTime; } if ($seoSection) { $schemaArticle['articleSection'] = $seoSection; } if (!empty($seoTags)) { $schemaArticle['keywords'] = implode(', ', $seoTags); } @endphp @else @endif {{-- Breadcrumb Schema (se disponível) --}} @php $breadcrumbs = $seoData['breadcrumbs'] ?? []; $breadcrumbs = is_array($breadcrumbs) ? $breadcrumbs : []; @endphp @if (!empty($breadcrumbs)) @php $schemaBreadcrumbs = [ '@context' => 'https://schema.org', '@type' => 'BreadcrumbList', 'itemListElement' => array_map( function ($breadcrumb, $index) { return [ '@type' => 'ListItem', 'position' => $index + 1, 'name' => $breadcrumb['name'], 'item' => $breadcrumb['url'], ]; }, $breadcrumbs, array_keys($breadcrumbs), ), ]; @endphp @endif @verbatim @endverbatim
@include('components.header')
@include('components.live-video') @yield('content') {{-- Banner no rodapé --}} @include('components.banners', ['regionCode' => 'rodape']) @include('components.footer')
{{-- Estilos e scripts para banners de vídeo --}} {{-- Stories Viewer --}} @include('components.stories-viewer') {{-- Botões Admin Flutuantes --}} @if(auth()->check() && auth()->user()->can('create articles')) @php // URL do frontend Vue // Em produção: painel.portaldoholanda.com.br // Em desenvolvimento: mesma URL da API + /apps $frontendUrl = config('app.client_url'); // Se não estiver configurado, tentar FRONTEND_URL if (empty($frontendUrl)) { $frontendUrl = env('FRONTEND_URL'); } // Se ainda não tiver, usar a URL atual do site + /apps (desenvolvimento) // Isso funciona porque em dev o frontend está servido na mesma URL if (empty($frontendUrl)) { $frontendUrl = url('/apps'); } // Garantir que não tenha barra no final $frontendUrl = rtrim($frontendUrl, '/'); @endphp
{{-- Botão Listar: aparece em todas as páginas --}} {{-- Botão Editar: aparece APENAS em páginas de artigo (quando $article existe) --}} {{-- Em capa, seções, tags e search: este botão NÃO aparece --}} @isset($article) @if($article && $article->id) @endif @endisset {{-- Botão Criar: aparece em todas as páginas --}}
@endif