presseportale/resources/views/components/web/transparency-nav.blade.php
Kevin Adametz 5dcaf4e7b0 web: E9 und E10 entschieden — Zuordnung aktiv, eine Adresse je statischer Seite, Hub-Portalseiten leiten weiter
E9: Kategorie-Zuordnung wie vorgeschlagen übernommen, Zuordnung ist
standardmäßig an (CANONICAL_ASSIGNMENT_ENABLED). Auf der Dev-Kopie
verifiziert: Kopie trägt rel=canonical auf die Erstquelle und fällt aus der
Sitemap ihres Portals.

E10: faq, hilfe, gute-pressemitteilung, die vier Transparenzseiten und die
API-Doku lagen auf allen drei Hosts mit identischem Text und je eigenem
Self-Canonical. Jetzt führt presseecho die Informationsseiten, der Hub die
API-Doku; Sitemap und llms.txt nennen nur die führende Adresse.
Rechtstexte (Impressum, Datenschutz, AGB, Richtlinien, Meldeweg,
Kündigung) bleiben bewusst je Host — jede Domain ist ein eigenes Angebot
mit eigener Anbieterkennzeichnung.

Bei der Erreichbarkeitsprüfung des Hubs gefunden und behoben:
/de/preise, /de/veroeffentlichen, /de/newsrooms und /de/suche wurden unter
pressekonto.com mit dem Branding von businessportal24 ausgeliefert (der
Portal-Kontext fällt dort darauf zurück) — jetzt 301 auf presseecho, die
Transparenz-Navigation verlinkt direkt dorthin. /de/kontakt und
/de/ueber-uns sprangen über /de auf die Startseite, jetzt in einem Schritt.

Der Self-Canonical kommt jetzt aus dem aufgerufenen Host; Portal-Inhalte,
die über den Hub laufen, behalten ihr Portal (webPortalContextApplied).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-18 07:52:09 +00:00

32 lines
1.7 KiB
PHP

@props([
'current' => null,
])
@php
// Roadmap 2.4: Unter-Navigation über der Headline von Preisseite und den
// vier Transparenzseiten — damit die Antworten auf „Was kostet das?",
// „Geht das ohne Abo?" und „Wie werde ich es wieder los?" neben den
// Tarifen stehen. `current` = Routenname der aktuellen Seite.
$items = [
'preise' => __('pricing.transparency_nav.pricing'),
'was-kostet-eine-pressemitteilung' => __('pricing.transparency_nav.cost'),
'pressemitteilung-veroeffentlichen-ohne-abo' => __('pricing.transparency_nav.no_subscription'),
'pressemitteilung-loeschen-oder-aendern-lassen' => __('pricing.transparency_nav.change_delete'),
'pressemitteilung-kostenlos-veroeffentlichen' => __('pricing.transparency_nav.free'),
];
@endphp
<nav {{ $attributes->merge(['class' => 'flex items-center gap-x-4 gap-y-2 flex-wrap']) }} aria-label="{{ __('pricing.transparency_nav.label') }}">
<span class="eyebrow muted text-[10px]">{{ __('pricing.transparency_nav.label') }}</span>
<ul class="m-0 p-0 list-none flex flex-wrap gap-1.5">
@foreach ($items as $routeName => $label)
<li>
@if ($routeName === $current)
<span class="inline-flex items-center px-3 py-1.5 text-[12.5px] font-semibold border border-brand bg-brand text-white" aria-current="page">{{ $label }}</span>
@else
<a href="{{ \App\Support\StaticPageCanonical::publicUrlFor($routeName) }}" class="inline-flex items-center px-3 py-1.5 text-[12.5px] font-semibold border border-bg-rule-strong bg-white text-ink hover:bg-bg-elev transition-colors">{{ $label }} →</a>
@endif
</li>
@endforeach
</ul>
</nav>