diff --git a/resources/views/web/layouts/web-master.blade.php b/resources/views/web/layouts/web-master.blade.php index fbbc913..93963e7 100644 --- a/resources/views/web/layouts/web-master.blade.php +++ b/resources/views/web/layouts/web-master.blade.php @@ -5,9 +5,38 @@ - - @yield('title', $domainName ?? config('app.name', 'Laravel')) + @php + $siteName = $domainName ?? config('app.name', 'Laravel'); + $pageTitle = trim($__env->yieldContent('title')) ?: $siteName; + $pageDescription = trim($__env->yieldContent('meta_description')) ?: $siteName; + // Self-Canonical als Default aus der Portal-URL + Request-Pfad (ohne Query): + // pro Portal/Domain getrennt und unabhängig von URL::forceRootUrl – verhindert Cross-Portal-Duplicate. + $portalBase = rtrim($domainUrl ?? config('app.url'), '/'); + $canonicalUrl = trim($__env->yieldContent('canonical')) ?: ($portalBase.request()->getPathInfo()); + $ogType = trim($__env->yieldContent('og_type')) ?: 'website'; + $ogImage = trim($__env->yieldContent('og_image')); + @endphp + + + + {{ $pageTitle }} + + {{-- Kanonische URL --}} + + + {{-- OpenGraph / Social --}} + + + + + + @if ($ogImage) + + @endif + + + diff --git a/resources/views/web/release-detail.blade.php b/resources/views/web/release-detail.blade.php index b10a6d1..672ea4b 100644 --- a/resources/views/web/release-detail.blade.php +++ b/resources/views/web/release-detail.blade.php @@ -1,6 +1,9 @@ @extends('web.layouts.web-master') @section('title', 'KI-Revolution in Deutschland - Business Portal 24') +@section('meta_description', 'Neue Studie zeigt massive Investitionen deutscher Unternehmen in künstliche Intelligenz für 2025.') +@section('og_type', 'article') +@section('canonical', route('release.detail', ['slug' => $releaseSlug])) @section('content') diff --git a/tests/Feature/Web/CanonicalMetaTest.php b/tests/Feature/Web/CanonicalMetaTest.php new file mode 100644 index 0000000..0c15e49 --- /dev/null +++ b/tests/Feature/Web/CanonicalMetaTest.php @@ -0,0 +1,29 @@ +get('https://businessportal24.test/release/ki-revolution') + ->assertSuccessful() + ->assertSee('', false) + ->assertSee('