- App\Support\StructuredData: Portal-Organization als Publisher mit @id und Logo (ImageObject), Newsroom-@id; NewsArticle.author auf der Meldung und Organization auf der Newsroom-Seite beschreiben jetzt dieselbe Entitaet. Startseiten nutzen denselben Publisher. - /sitemap-news.xml je Spoke (NewsSitemapController): im Archiv sichtbare Meldungen der letzten 48 h, max. 1.000, news:publication mit Portalname und Sprache; 15 min gecacht, mit den anderen Sitemaps geleert; in robots.txt der Spokes. Hub liefert leere Liste. - /llms.txt je Host (LlmsTxtController): sachliche Beschreibung, URL-Aufbau, aktive Kategorien, Seiten fuer Unternehmen, Rechtliches; Hub verweist auf beide Portale. Keine Aussagen ueber KI-Nennungen. - Protokoll Teil 5 (Block 2) inkl. Betreiber-Schritten fuer das Publisher Center und Befund zu 2.5/E5; Roadmap 2.1/2.7 abgehakt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
90 lines
3.5 KiB
PHP
90 lines
3.5 KiB
PHP
@extends('web.layouts.web-master')
|
||
|
||
@php
|
||
use App\Support\StructuredData;
|
||
|
||
$brand = config('domains.domains.presseecho.brand', []);
|
||
|
||
// SEO: WebSite-Markup mit Sitelinks-Searchbox (SearchAction auf /suche).
|
||
$portalBase = StructuredData::portalBase($domainUrl ?? null);
|
||
$brandFullName = ($brand['name'] ?? 'presse').($brand['accent'] ?? 'echo');
|
||
|
||
$jsonLd = [
|
||
'@context' => 'https://schema.org',
|
||
'@graph' => [
|
||
[
|
||
'@type' => 'WebSite',
|
||
'name' => $brandFullName,
|
||
'url' => $portalBase.'/',
|
||
'inLanguage' => app()->getLocale(),
|
||
'potentialAction' => [
|
||
'@type' => 'SearchAction',
|
||
'target' => [
|
||
'@type' => 'EntryPoint',
|
||
'urlTemplate' => $portalBase.'/'.app()->getLocale().'/suche?q={search_term_string}',
|
||
],
|
||
'query-input' => 'required name=search_term_string',
|
||
],
|
||
],
|
||
StructuredData::publisher($portalBase),
|
||
],
|
||
];
|
||
@endphp
|
||
|
||
@section('structured_data')
|
||
<x-web.structured-data :data="$jsonLd" />
|
||
@endsection
|
||
|
||
{{-- DE-Meta kommt brand-spezifisch aus config/domains.php, EN aus den Übersetzungsdateien. --}}
|
||
@section('title', app()->getLocale() === 'de'
|
||
? ($brand['meta_title'] ?? 'Aktuelle Pressemitteilungen aus Wirtschaft & Industrie – presseecho')
|
||
: __('web.meta.home_title', ['brand' => ($brand['name'] ?? 'presseecho').($brand['accent'] ?? '')]))
|
||
@section('meta_description', app()->getLocale() === 'de'
|
||
? ($brand['meta_description'] ?? 'Qualitätsgeprüfte Pressemitteilungen aus Wirtschaft und Industrie im DACH-Raum.')
|
||
: __('web.meta.home_description'))
|
||
|
||
@section('hreflang')
|
||
<link rel="alternate" hreflang="de" href="{{ url('/de') }}">
|
||
<link rel="alternate" hreflang="en" href="{{ url('/en') }}">
|
||
<link rel="alternate" hreflang="x-default" href="{{ url('/de') }}">
|
||
@endsection
|
||
|
||
@section('content')
|
||
<x-web.site-header />
|
||
|
||
<main class="bg-bg text-ink">
|
||
<x-web.focus-hero
|
||
:lead-release="$leadRelease ?? null"
|
||
:side-releases="$sideReleases ?? []"
|
||
:boosted-ids="$boostedIds ?? []" />
|
||
|
||
<section class="max-w-layout mx-auto px-4 sm:px-6 lg:px-8 mt-16">
|
||
<div class="grid gap-9 grid-cols-1 lg:grid-cols-[1.7fr_1fr]">
|
||
<livewire:web.press-release-feed :portal="\App\Enums\Portal::Presseecho->value" :language="app()->getLocale()" />
|
||
|
||
<aside class="flex flex-col gap-9">
|
||
<x-web.most-read :releases="$mostReadReleases ?? []" />
|
||
<x-web.publisher-cta />
|
||
<x-web.active-newsrooms :companies="$activeNewsrooms ?? []" />
|
||
</aside>
|
||
</div>
|
||
</section>
|
||
|
||
<x-web.industry-spotlight
|
||
:industry="$spotlight['industry'] ?? null"
|
||
:stats="$spotlight['stats'] ?? null"
|
||
:releases="$spotlight['releases'] ?? []" />
|
||
|
||
<x-web.industry-index :industries="($industryIndex ?? collect())->isNotEmpty() ? $industryIndex->toArray() : null" />
|
||
|
||
<x-web.pricing-teaser />
|
||
|
||
{{-- Newsletter-Sektion bewusst entfernt (Double-Opt-in nachgelagert,
|
||
siehe dev/release/entwicklungsplan-release.md) — stattdessen Veröffentlichen-CTA. --}}
|
||
<x-web.publish-band />
|
||
|
||
<x-web.quality-summary :stats="$homeStats ?? []" />
|
||
</main>
|
||
|
||
<x-web.site-footer />
|
||
@endsection
|