presseportale/docs/frontend/Struktur Frontend.md
Kevin Adametz 326ff9b2a0 Editorial-Frontend: oeffentliche Unterseiten, Preise & Linkpflege
Oeffentliche Strecke durchgaengig auf das Editorial-Design umgestellt und
datengetrieben gemacht:

- Newsrooms-Verzeichnis + Newsroom-Detailseiten (Suche, Pagination)
- Preise-Seite neu (Abos via Plan, Einzel-PM via config/billing, Add-ons via
  config/credits); Texte ausgelagert nach lang/{de,en}/pricing.php
- Pricing-Teaser-Komponente auf den Startseiten + Preise-Link in Header/Footer
- Statische Seiten im Editorial-Design ueber neue Komponente x-web.static-page:
  impressum, datenschutz, agb, cookies, faq (Akkordeon), hilfe, kontakt,
  ueber-uns, api (altes Theme/gradient-hero entfernt)
- Header/Footer-Linkpflege: tote #-Anker raus, FAQ/Hilfe/Cookies verlinkt,
  "Anmelden" fuehrt in den Hub
- Legacy-URL-Redirects (.html, presskit->newsroom, Regionen)
- Datums-Bugfix in Feed-Komponenten

Tests: NewsroomPage, PreisePage, PricingTeaser, StaticPages, NavigationLinks,
LegacyRedirect. Doku in docs/frontend aktualisiert.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-17 16:08:46 +00:00

9.5 KiB
Raw Blame History

1. Hauptnavigation (rechts oben)

Seite Link Dahinter Relaunch
Home / Startseite Portal
Registrierung /de/registration.html Account-Anlage → Hub (pressekonto)
Login /de/login.html Anmeldung → Hub (Sanctum, kein eigener Login am Portal)
Preisliste /de/pricelist.html Tarife → Hub (neue Tarifstruktur Einzel/Starter/…/Agency)
Service /de/service.html Leistungsübersicht / Verkaufsseite wird zu veroeffentlichen
Kontakt /de/contact.html Kontakt Portal + Hub (auch hier muss deutlich werden, dass der Hub das ganze Backend System ist)

2. Region/Sprache

Variante Link Relaunch
Deutsch / Portal
Deutsch (CH) /de-ch raus
Deutsch (AT) /de-at raus
English /en Portal

3. „Presse"-Dropdown — Ratgeber/SEO-Content (12 Seiten)

Das ist editorial wertvollster Teil: statische Ratgeber-Seiten, die wahrscheinlich organischen Long-Tail-Traffic ziehen.

Seite Link
Pressemitteilung schreiben /de/presse/pressemitteilung-schreiben.html
Aufbau Pressemitteilung /de/presse/pressemitteilung-aufbau.html
Pressemitteilung Nutzen & Einsatz /de/presse/pressemitteilung-nutzen.html
Pressemappe /de/presse/pressemappe.html
Redakteure & Journalisten /de/presse/redakteure-journalisten.html
Pressemitteilung Beispiel /de/presse/pressemitteilung-beispiel.html
Pressekonferenz /de/presse/pressekonferenz.html
Deutsche Presse Agentur /de/presse/deutsche-presseagentur.html
Redaktion /de/presse/redaktion.html
Pressestelle /de/presse/pressestelle.html
Pressesprecher /de/presse/pressesprecher.html
Presseausweis /de/presse/presseausweis.html

Relaunch: Diese URLs unbedingt 1:1 erhalten oder sauber 301-redirecten — hier steckt der SEO-Wert. Editorial passen sie zu beiden Portalen, ggf. sogar besser zu presseecho (Kontexttiefe). Entscheidung offen, wo sie inhaltlich angesiedelt werden. Hier würde ich eine FAQ Seite machen, die alle Themen beinhaltet und sauber 301-redirectet

4. Kategorien (14 Stück)

/de/category/{slug}.html — Listenseiten je Themenrubrik:

Handel · IT · Finanzen · Reisen · Kultur · Politik · Medizin · Sport · Motor/Verkehr · Haus · Mode · Sonstiges · Wissenschaft/Forschung · Recht

Relaunch: Diese Kategoriestruktur ist die Backbone für Migration + Boost-Logik (Kategorieseiten sind Teil deiner Boost-Platzierung). Beim Relaunch zu prüfen: Übernimmst du alle 14 unverändert, oder konsolidierst du? „Sonstiges" als Auffangbecken ist für deine Content-Score-/Trust-Logik suboptimal.

5. Content-/Detailseiten (die eigentlichen Templates)

Typ URL-Muster Funktion Relaunch
PM-Detailseite /de/{slug}.html Einzelne Pressemitteilung Portal — Kern-Template
Kategorie-Liste /de/category/{slug}.html PMs je Rubrik, paginiert Portal
Pressemappe (Presskit) /de/presskit/{id}/{slug}.html Firmenprofil + alle PMs der Firma Portal = deine „Firmen-Detailseite"
Stream + Paginierung /de?page=N 732 Seiten Archiv Portal — aber Paginierungs-/Indexierungsstrategie überdenken

Die Presskit-Seite entspricht funktional exakt deiner geplanten Firmen-Detailseite (Header, Stammdaten, Boilerplate, Kontakt, gefilterte PM-Liste). Gutes Mapping — du baust das also nicht neu, sondern modernisierst ein bestehendes Konstrukt.

Seite Link Relaunch
Impressum /de/imprint.html Portal + Hub (pflicht, pro Domain)
AGB /de/terms.html Hub (Vertragsbeziehung läuft über pressekonto)
Datenschutz /de/privacypolicy.html Portal + Hub

Einordnung für den Relaunch

Wenn ich das gegen deine Hub-and-Spoke-Architektur lege, fällt die Seitenmenge in drei klare Eimer:

Bleibt am Portal (businessportal24.com & presseecho.de = öffentlicher Spoke): Home/Stream, PM-Detail, Kategorie-Listen, Pressemappe/Firmen-Detail, Ratgeber-Seiten, Impressum, Datenschutz, Kontakt.

Wandert in den Hub (pressekonto): Registrierung, Login, Preisliste/Tarife, AGB, und alles dahinter (PM erstellen, Pressemappe anlegen, Account). Das deckt sich mit deinem Prinzip „Portale haben keine eigenen Login-Systeme".


Relaunch-Mapping der Bestands-URLs (IST 17.06.2026)

Alle Alt-URLs werden per 301 auf die neue Struktur geleitet (Implementierung in routes/web.php, Closure $htmlRedirect + Regions-Routen; Test: tests/Feature/Web/LegacyRedirectTest.php). Die neue Struktur liegt unter dem Ausgaben-Präfix /{de|en}/….

Alt-URL (Altsystem) Ziel (301) Status
/ /de (Default-Ausgabe) ✅
/de/{slug}.html (PM) /de/press-release/{slug} ✅
/de/category/{slug}.html /de/category/{slug} ✅
/de/presskit/{id}/{slug}.html /de/newsroom/{slug} (Lookup über companies.legacy_id; Fallback /newsrooms) ✅
/de/presse/*.html (12 Ratgeber) /de/faq (konsolidiert) ✅
/de/pricelist.html /de/preise ✅
/de/service.html /de/veroeffentlichen ✅
/de/contact.html /de/kontakt ✅
/de/imprint.html /de/impressum ✅
/de/terms.html /de/agb ✅
/de/privacypolicy.html /de/datenschutz ✅
/de/registration.html Hub pressekonto/register ✅
/de/login.html Hub pressekonto/login ✅
/de/kategorien.html (Übersicht) /de (Übersicht entfällt) ✅
/de-ch, /de-at (+ Subpfade) /de ✅

Bewusst auf später verschoben (eigene Slice):

  • Regionen-Übersichten /region/{slug} (Punkt 3 der öffentlichen Strecke) – aktuell leiten nur die entfallenen Sprachvarianten de-ch/de-at auf /de.
  • Tarife/AGB im Hub: pricelist zeigt vorerst auf die öffentliche SEO-Seite /preise; die buchbare Tarifstruktur (Checkout) lebt im Hub.

Erledigtes Feinmapping:

  • Presskit→Newsroom: presskit/{id}/{slug} löst über den Unique-Index companies.(legacy_portal, legacy_id) den heutigen Newsroom auf und leitet 301 direkt auf /newsroom/{slug} (nur bei aktiver Firma mit ≥1 veröffentlichter Meldung; sonst Fallback /newsrooms).
  • Preise datengetrieben & überall sichtbar: Tarif-Teaser auf der Startseite aus Plan::active() (x-web.pricing-teaser); Preise-Link in Header-Utility-Bar und Footer. Test: tests/Feature/Web/PricingTeaserTest.php.
  • Statische Seiten im Editorial-Design (Rebuild abgeschlossen): Pflicht- seiten impressum, datenschutz, agb, cookies (Prosa über .pm-body) sowie faq (natives <details>-Akkordeon), hilfe (Support-Landing), kontakt (Kontaktwege; Formular wartet auf POST-Handler — als TODO markiert), ueber-uns (Kennzahlen/Mission/Werte/Team/Timeline) und api (Features/Code-Beispiel/Integrationen). Tote Doku-/Anker-Links durch echte Ziele bzw. Hinweise ersetzt. Gemeinsames Gerüst: x-web.static-page.
  • Header/Footer-Linkpflege: site-header/site-footer ohne tote #-Links — FAQ/Hilfe/Cookies verlinkt, „Anmelden" führt in den Hub ({domain_portal_url}/login), nicht verlinkte Platzhalter entfernt. Test: tests/Feature/Web/NavigationLinksTest.php. Gemeinsames Gerüst: wiederverwendbare Komponente x-web.static-page (site-header, Breadcrumb, Masthead, site-footer). Altes Theme (livewire:web.header, gradient-hero) entfernt. Rechtstexte sind weiterhin Platzhalter (vor Go-Live ersetzen). Test: tests/Feature/Web/StaticPagesTest.php.
  • /preise-Seite im Editorial-Design (Rebuild abgeschlossen): Reihenfolge Abo-Tarife → Einzel-PM → Add-ons. Datengetrieben über Plan::active(), config('billing.single_pm_price_cents') und config('credits.*'); Route $preisePage-Closure. Texte ausgelagert in lang/{de,en}/pricing.php (Schlüssel pricing.*), damit Portal/Hub einheitlich ziehen können. Add-on- Lineup (Magic-Link-Pfade) ist mit TODO-Kommentaren als „noch im Rework" markiert. Test: tests/Feature/Web/PreisePageTest.php.