Interior-Feinschliff: Hero-Slideshow, Lektorat, Rechtstexte, Aufräumen und Korrekturen 08.10.

Startseite und Heroes
- Hero-Slideshow (11 Motive inkl. Febrü) mit Infokarte, Laufzeit-Linie, größeren Klickflächen,
  Goldrahmen und mobiler Karte unter dem Bild; Zeile über der Überschrift, neue Vertrauenspunkte
- Hero-Stil auf Marken, Über uns und Kontakt übertragen, Breadcrumb entfernt
- Gründer-Leiste, Vision-Box auf Ocker, Showroom-Display in Box mit „Größer ansehen“/Vollbild
- Akzentfarbe #a8741f, größere Serif-Überschriften in der Interior-Welt
- Marken: Bildpause mit Zitat; Vereine aktualisiert und verlinkt

Inhalte
- Lektorat aller angezeigten Texte, /about-Korrekturen, Rechtstexte (DDG, TDDDG, Hosting Hetzner)
- Ablauf Maßanfertigung überall einheitlich, Magazin-Beitrag neu, alte Beiträge offline,
  deutsches Datum/Lesezeit, FAQ Projektausstattung, Otterpohl
- Referenzen-Seite per CMS-Schalter ausblendbar

CMS und Technik
- Tote Sektionen, Felder, Seiten und Komponenten entfernt und archiviert (dev/2026-08-28/archiv-*)
- Entwurf /entwurf, Farb-Schalter und /welcome entfernt; Test-Routen nur noch lokal
- Seitenbaum-Beschreibungen geprüft, fehlende CMS-Felder ergänzt, Markenliste aus „Kernmarken“
- Admin-Bildvorschauen repariert, verwendete Bilder in die Mediathek übernommen
- Seeder für das Deployment siehe dev/2026-08-28/entwicklungsplan.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-08 14:00:15 +00:00
parent 4b07bbdcae
commit fcb10be120
406 changed files with 22549 additions and 3798 deletions

View file

@ -31,28 +31,11 @@ class CmsContentSeeder extends Seeder
*/
public array $onlySections = [];
/**
* Sections to skip (not migrated, handled elsewhere or irrelevant).
*
* netzwerk_cabinet_partner / netzwerk_immobilien_hint: siehe NetzwerkPageCmsSeeder
* (nur einfügen wenn leer, damit manuelle CMS-Anpassungen nicht überschrieben werden).
*
* @var array<string>
*/
protected array $skipSections = [
'netzwerk_cabinet_partner',
'netzwerk_immobilien_hint',
];
public function run(): void
{
/** @var array<string, array{0: string, 1: string}> $sectionMap */
$sectionMap = config('cms_section_map.sections', []);
/** @var array<string, string> $langKeys */
$langKeys = config('cms_section_map.lang_keys', []);
/** @var array<string, mixed> $configTheme */
$configTheme = config('content.themes.b2in', []);
/** @var array<string, mixed> $langDe */
$langDe = Lang::get('b2in.themes.b2in', [], 'de');
/** @var array<string, mixed> $langEn */
@ -68,11 +51,6 @@ class CmsContentSeeder extends Seeder
$langEn = [];
}
/** @var array<string, mixed> $themeDe */
$themeDe = array_merge($configTheme, $langDe);
/** @var array<string, mixed> $themeEn */
$themeEn = array_merge($configTheme, $langEn);
$created = 0;
$updated = 0;
$skipped = 0;
@ -82,20 +60,14 @@ class CmsContentSeeder extends Seeder
continue;
}
if ($this->onlySections === [] && in_array($sectionKey, $this->skipSections, true)) {
continue;
}
$langSectionKey = $langKeys[$sectionKey] ?? $sectionKey;
if (! array_key_exists($langSectionKey, $themeDe)) {
$this->command?->warn("Unmapped or missing theme data for section: {$sectionKey} (lang key: {$langSectionKey}) – skipping.");
if (! array_key_exists($sectionKey, $langDe)) {
$this->command?->warn("Unmapped or missing theme data for section: {$sectionKey} – skipping.");
continue;
}
$sectionDataDe = $themeDe[$langSectionKey];
$sectionDataEn = $themeEn[$langSectionKey] ?? $sectionDataDe;
$sectionDataDe = $langDe[$sectionKey];
$sectionDataEn = $langEn[$sectionKey] ?? $sectionDataDe;
[$group, $key] = $groupKeyPair;
$type = $this->detectType($sectionDataDe);