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>
This commit is contained in:
parent
0618080e02
commit
326ff9b2a0
34 changed files with 2842 additions and 3102 deletions
150
docs/frontend/Struktur Frontend.md
Normal file
150
docs/frontend/Struktur Frontend.md
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
|
||||
|
||||
## 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.
|
||||
|
||||
## 6. Footer / Legal
|
||||
|
||||
| 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`.
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue