- Hinweisleiste per B2IN_ANNOUNCEMENT_BAR ausgeblendet (Standard aus) - Hero: „Räume aus einer Hand.“ als neue Überschrift, zweiter Button entfernt - Projekttext mit zentralem deutschen Vertragspartner (Punkt statt Gedankenstrich) - Otterpohl als vierte Kernmarke: Text v2, Abschnitt „Montage“, Titelbild getauscht - Markenabschnitte: Absätze mit „- “ als Liste mit fetter Einleitung - Titelbilder und Galerien für CABINET, Rotpunkt, Febrü und Otterpohl (WebP) - Feedback 17.09. in den Markentexten, Demobilder entfernt, WhatsApp-Nummer - Palette „Modern“ fest ohne Schalter, Entwurf /entwurf mit Hero-Slideshow - Seeder-Liste fürs Deployment im Entwicklungsplan Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
299 lines
17 KiB
PHP
299 lines
17 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
/**
|
||
* Seitenbaum für den Inhalte-Editor im Portal (Nachtrag 12).
|
||
*
|
||
* Der Editor zeigt die CMS-Sektionen nicht mehr nach Datenbank-Gruppe, sondern so, wie sie auf
|
||
* der Website stehen: je Seite in der Reihenfolge von oben nach unten, mit Klartext-Titel und
|
||
* einem Satz, der sagt, was die Sektion ist. `anchor` ist die Sprungmarke in der Vorschau
|
||
* (das `id` des Abschnitts im Frontend).
|
||
*
|
||
* Eine Sektion, die auf mehreren Seiten steht, ist einmal eingetragen – dort, wo sie zuerst
|
||
* auftaucht – und nennt die anderen Seiten in der Beschreibung.
|
||
*
|
||
* `group`/`key` sind Gruppe und Schlüssel in flux_cms_contents (siehe cms_section_map.php).
|
||
* Sektionen, die in der Datenbank liegen, aber hier nicht eingetragen sind, sammelt der Editor
|
||
* unter „Nicht mehr verwendet“ – sie gehen also nicht verloren, stehen aber auch nicht im Weg.
|
||
*
|
||
* `fields` überschreibt Feldbeschriftungen je Sektion; alles andere kommt aus `field_labels`.
|
||
*/
|
||
return [
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Feldbeschriftungen
|
||
|--------------------------------------------------------------------------
|
||
| Gilt für Felder auf Sektionsebene und für Felder in Listeneinträgen.
|
||
| Unbekannte Schlüssel werden lesbar gemacht (button_text → „Button text“).
|
||
*/
|
||
'field_labels' => [
|
||
'title' => 'Überschrift',
|
||
'subtitle' => 'Untertitel',
|
||
'headline' => 'Überschrift',
|
||
'tagline' => 'Claim',
|
||
'text' => 'Text',
|
||
'intro' => 'Einleitung',
|
||
'description' => 'Beschreibung',
|
||
'content' => 'Inhalt',
|
||
'lead' => 'Vorspann',
|
||
'note' => 'Hinweis',
|
||
'label' => 'Beschriftung',
|
||
'badge' => 'Kennzeichen',
|
||
'eyebrow' => 'Überzeile',
|
||
'quote' => 'Zitat',
|
||
'author' => 'Zitatgeber',
|
||
'name' => 'Name',
|
||
'role' => 'Rolle / Funktion',
|
||
'city' => 'Ort',
|
||
'value' => 'Wert',
|
||
'number' => 'Zahl',
|
||
'suffix' => 'Zusatz',
|
||
'icon' => 'Icon',
|
||
'image' => 'Bild',
|
||
'image_alt' => 'Bildbeschreibung',
|
||
'alt' => 'Bildbeschreibung',
|
||
'logo' => 'Logo',
|
||
'link' => 'Link',
|
||
'url' => 'Adresse (URL)',
|
||
'href' => 'Link',
|
||
'link_text' => 'Linktext',
|
||
'button_text' => 'Button-Beschriftung',
|
||
'button_link' => 'Button-Link',
|
||
'primary_button' => 'Erster Button',
|
||
'secondary_button' => 'Zweiter Button',
|
||
'cta_title' => 'Überschrift Abschluss',
|
||
'cta_text' => 'Text Abschluss',
|
||
'cta_link' => 'Link Abschluss',
|
||
'items' => 'Einträge',
|
||
'steps' => 'Schritte',
|
||
'cards' => 'Karten',
|
||
'stats' => 'Kennzahlen',
|
||
'features' => 'Merkmale',
|
||
'benefits' => 'Vorteile',
|
||
'values' => 'Werte',
|
||
'links' => 'Links',
|
||
'columns' => 'Spalten',
|
||
'menu' => 'Menüpunkte',
|
||
'navigation' => 'Navigation',
|
||
'topics' => 'Themen',
|
||
'options' => 'Auswahlmöglichkeiten',
|
||
'placeholder' => 'Platzhaltertext',
|
||
'meta_title' => 'Seitentitel (Browser, Google)',
|
||
'meta_description' => 'Beschreibung für Google',
|
||
'email' => 'E-Mail',
|
||
'phone' => 'Telefon',
|
||
'whatsapp' => 'WhatsApp-Nummer',
|
||
'address' => 'Adresse',
|
||
'opening_hours' => 'Öffnungszeiten',
|
||
'copyright' => 'Copyright-Zeile',
|
||
'map_alt' => 'Beschreibung der Karte',
|
||
'region_label' => 'Beschriftung der Region',
|
||
'distance_suffix' => 'Zusatz hinter der Entfernung',
|
||
'hub' => 'Drehscheibe (Bielefeld)',
|
||
'steps_title' => 'Überschrift Ablauf-Block',
|
||
'steps_text' => 'Einleitung Ablauf-Block',
|
||
'x' => 'Position waagerecht (Entwickler)',
|
||
'y' => 'Position senkrecht (Entwickler)',
|
||
'id' => 'Sprungmarke (Entwickler)',
|
||
'slug' => 'Adresskürzel (Entwickler)',
|
||
'teaser' => 'Kurztext',
|
||
'summary' => 'Zusammenfassung',
|
||
'brands' => 'Marken',
|
||
'projects' => 'Projekte',
|
||
'partners' => 'Partner',
|
||
'questions' => 'Fragen',
|
||
'question' => 'Frage',
|
||
'answer' => 'Antwort',
|
||
'read_more' => 'Weiterlesen-Text',
|
||
'empty_text' => 'Text, wenn nichts vorhanden ist',
|
||
'success_text' => 'Text nach dem Absenden',
|
||
'submit_text' => 'Beschriftung Absenden-Button',
|
||
'privacy_text' => 'Datenschutz-Hinweis',
|
||
'subjects' => 'Betreffe',
|
||
'subject' => 'Betreff',
|
||
],
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Seiten in der Reihenfolge des Menüs
|
||
|--------------------------------------------------------------------------
|
||
*/
|
||
'pages' => [
|
||
|
||
'home' => [
|
||
'title' => 'Startseite',
|
||
'path' => '/',
|
||
'sections' => [
|
||
['group' => 'home', 'key' => 'hero', 'anchor' => 'hero', 'title' => 'Hero',
|
||
'description' => 'Der große Einstieg ganz oben: Überschrift, Text, Buttons und Bild.'],
|
||
['group' => 'home', 'key' => 'hero_slider', 'anchor' => 'hero', 'title' => 'Hero mit Slideshow (Entwurf)',
|
||
'path' => '/entwurf',
|
||
'description' => 'Der Hero des Entwurfs vom 24.09.: Überschrift, Text, Button und die Slideshow. Liste „slides“ leer = Titelbilder der Kernmarken; sonst je Eintrag image, label, caption und active.'],
|
||
['group' => 'home', 'key' => 'founder_bar', 'anchor' => 'gruender', 'title' => 'Gründer-Leiste',
|
||
'description' => 'Schmale Zeile mit Marcel Scheibe und Zitat. Steht auch auf „Über uns“ und in der Immobilien-Welt.'],
|
||
['group' => 'home', 'key' => 'audience_switch', 'anchor' => 'wege', 'title' => 'Zielgruppen-Wahl',
|
||
'description' => 'Zwei Wege: Privat einrichten oder Projekt ausstatten.'],
|
||
['group' => 'home', 'key' => 'core_brands', 'anchor' => 'marken', 'title' => 'Kernmarken',
|
||
'description' => 'Überschrift und Untertitel des Marken-Rasters. Die Kacheln selbst kommen aus der Markenverwaltung.'],
|
||
['group' => 'home', 'key' => 'origin_section', 'anchor' => 'herkunft', 'title' => 'Aus der Region gefertigt',
|
||
'description' => 'Karte mit Bielefeld als Drehscheibe und der Ablauf-Block am Beispiel CABINET. Die Standorte pflegst du bei den Marken. Steht auch auf /marken.'],
|
||
['group' => 'home', 'key' => 'vision_section', 'anchor' => 'vision', 'title' => 'Gebaut auf Expertise',
|
||
'description' => 'Die Geschichte hinter B2in: Text, Kennzahlen und Bild.'],
|
||
['group' => 'home', 'key' => 'sponsoring', 'anchor' => 'engagement', 'title' => 'Regional verbunden',
|
||
'description' => 'Vereine und Organisationen, die B2in unterstützt.'],
|
||
['group' => 'referenzen', 'key' => 'display_feed', 'anchor' => 'displays', 'title' => 'Aus den Stores',
|
||
'description' => 'Überschrift und Text des Display-Feeds. Die Inhalte kommen aus den Store Displays. Steht auch auf /referenzen.'],
|
||
['group' => 'home', 'key' => 'immobilien_teaser', 'anchor' => 'immobilien', 'title' => 'Immobilien-Teaser',
|
||
'description' => 'Der Übergang in die Immobilien-Welt am Ende der Startseite.'],
|
||
['group' => 'global', 'key' => 'cta_section', 'anchor' => 'cta', 'title' => 'Abschluss: Termin anfragen',
|
||
'description' => 'Der letzte Block vor dem Fuß. Steht auf allen Interior-Seiten.'],
|
||
],
|
||
],
|
||
|
||
'marken' => [
|
||
'title' => 'Marken',
|
||
'path' => '/marken',
|
||
'sections' => [
|
||
['group' => 'marken', 'key' => 'hero', 'anchor' => 'seitenkopf', 'title' => 'Seitenkopf',
|
||
'description' => 'Überschrift, Einleitung und Bild oben auf /marken. Die Markenblöcke darunter kommen aus der Markenverwaltung.'],
|
||
['group' => 'marken', 'key' => 'network', 'anchor' => 'netzwerk', 'title' => 'Mehr als Marken: unser Netzwerk',
|
||
'description' => 'Partner und Zulieferer jenseits der Kernmarken.'],
|
||
['group' => 'marken', 'key' => 'growth', 'anchor' => 'wachstum', 'title' => 'Die Markenwelt wächst',
|
||
'description' => 'Hinweis, dass weitere Marken folgen.'],
|
||
['group' => 'marken', 'key' => 'cta', 'anchor' => 'marken-cta', 'title' => 'Abschluss auf /marken',
|
||
'description' => 'Der Abschlussblock „Lernen Sie unsere Marken kennen“ mit Terminanfrage und WhatsApp.'],
|
||
['group' => 'marken', 'key' => 'craft', 'anchor' => 'handwerk', 'title' => 'Handwerk-Abschluss auf jeder Markenseite',
|
||
'description' => 'Der letzte Abschnitt auf den Seiten von CABINET, Rotpunkt und Febrü: „Planung plus Handwerk“ mit Link zu Otterpohl. Einmal gepflegt, überall gleich.', 'path' => '/marken/cabinet'],
|
||
],
|
||
],
|
||
|
||
'referenzen' => [
|
||
'title' => 'Referenzen',
|
||
'path' => '/referenzen',
|
||
'sections' => [
|
||
['group' => 'referenzen', 'key' => 'hero', 'anchor' => 'seitenkopf', 'title' => 'Seitenkopf',
|
||
'description' => 'Überschrift und Einleitung der Referenzen-Seite.'],
|
||
['group' => 'referenzen', 'key' => 'projects', 'anchor' => 'projekte', 'title' => 'Realisierte Projekte',
|
||
'description' => 'Überschrift, Text und Leerzustand über den Projekten. Die Projekte selbst pflegst du unter „Referenzen“.'],
|
||
],
|
||
],
|
||
|
||
'magazin' => [
|
||
'title' => 'Magazin',
|
||
'path' => '/magazin',
|
||
'sections' => [
|
||
['group' => 'magazin', 'key' => 'list', 'anchor' => 'magazin', 'title' => 'Magazin-Übersicht',
|
||
'description' => 'Überschrift und Einleitung der Übersicht. Die Beiträge pflegst du unter „Magazin“.'],
|
||
['group' => 'magazin', 'key' => 'detail', 'anchor' => null, 'title' => 'Beitragsseite',
|
||
'description' => 'Feste Texte auf jeder Beitragsseite, etwa „Zurück zur Übersicht“ und „Weitere Beiträge“.'],
|
||
],
|
||
],
|
||
|
||
'about' => [
|
||
'title' => 'Über uns',
|
||
'path' => '/about',
|
||
'sections' => [
|
||
['group' => 'about', 'key' => 'hero', 'anchor' => 'seitenkopf', 'title' => 'Seitenkopf',
|
||
'description' => 'Überschrift und Einleitung von „Über uns“.'],
|
||
['group' => 'about', 'key' => 'our_story', 'anchor' => 'geschichte', 'title' => 'Unsere Geschichte',
|
||
'description' => 'Der Text zur Entstehung von B2in.'],
|
||
['group' => 'about', 'key' => 'image_break', 'anchor' => 'bild', 'title' => 'Bildpause',
|
||
'description' => 'Großes Bild mit kurzer Zeile zwischen Geschichte und Werten.'],
|
||
['group' => 'about', 'key' => 'our_values', 'anchor' => 'werte', 'title' => 'Unsere Werte',
|
||
'description' => 'Die Werte-Kacheln.'],
|
||
['group' => 'netzwerk', 'key' => 'partner_cta', 'anchor' => 'cta', 'title' => 'Abschluss auf „Über uns“',
|
||
'description' => 'Der Abschlussblock am Ende von „Über uns“.'],
|
||
],
|
||
],
|
||
|
||
'contact' => [
|
||
'title' => 'Kontakt',
|
||
'path' => '/contact',
|
||
'sections' => [
|
||
['group' => 'contact', 'key' => 'contact_form', 'anchor' => 'kontakt', 'title' => 'Kontaktformular',
|
||
'description' => 'Überschrift, Betreffe, Feldbeschriftungen und Datenschutz-Hinweis des Formulars.'],
|
||
['group' => 'global', 'key' => 'contact', 'anchor' => 'kontakt', 'title' => 'Kontaktdaten',
|
||
'description' => 'Telefon, E-Mail, Adresse und die WhatsApp-Nummer. Ohne WhatsApp-Nummer erscheint kein WhatsApp-Button.'],
|
||
],
|
||
],
|
||
|
||
'faq' => [
|
||
'title' => 'FAQ',
|
||
'path' => '/faq',
|
||
'sections' => [
|
||
['group' => 'faq', 'key' => 'faq', 'anchor' => 'faq', 'title' => 'Fragen und Antworten',
|
||
'description' => 'Überschrift und die Liste der Fragen der Interior-Welt.'],
|
||
],
|
||
],
|
||
|
||
'global' => [
|
||
'title' => 'Auf jeder Seite',
|
||
'path' => '/',
|
||
'sections' => [
|
||
['group' => 'global', 'key' => 'announcement_bar', 'anchor' => 'header', 'title' => 'Hinweisleiste',
|
||
'description' => 'Schmale Zeile ganz oben über dem Menü. Leer lassen, um sie auszublenden.'],
|
||
['group' => 'global', 'key' => 'header', 'anchor' => 'header', 'title' => 'Hauptmenü',
|
||
'description' => 'Menüpunkte und Buttons im Kopf der Interior-Welt.'],
|
||
['group' => 'global', 'key' => 'appointment_widget', 'anchor' => null, 'title' => 'Terminanfrage-Widget',
|
||
'description' => 'Das schwebende Widget rechts unten: Texte, Themen und Zeitfenster.'],
|
||
['group' => 'global', 'key' => 'footer', 'anchor' => 'footer', 'title' => 'Fußbereich',
|
||
'description' => 'Spalten, Links, Social-Media und Copyright-Zeile.'],
|
||
],
|
||
],
|
||
|
||
'immobilien' => [
|
||
'title' => 'Immobilien-Welt',
|
||
'path' => '/immobilien',
|
||
'sections' => [
|
||
['group' => 'global', 'key' => 'announcement_bar_immobilien', 'anchor' => 'header', 'title' => 'Hinweisleiste (Immobilien)',
|
||
'description' => 'Hinweisleiste über dem Menü der Immobilien-Welt.'],
|
||
['group' => 'global', 'key' => 'header_immobilien', 'anchor' => 'header', 'title' => 'Hauptmenü (Immobilien)',
|
||
'description' => 'Menüpunkte und Buttons im Kopf der Immobilien-Welt.'],
|
||
['group' => 'global', 'key' => 'cta_section_immobilien', 'anchor' => 'cta', 'title' => 'Abschluss (Immobilien)',
|
||
'description' => 'Der letzte Block vor dem Fuß auf allen Immobilien-Seiten.'],
|
||
['group' => 'immobilien', 'key' => 'magazin_list', 'anchor' => 'magazin', 'title' => 'Magazin-Übersicht (Immobilien)',
|
||
'description' => 'Überschrift und Einleitung unter /immobilien/magazin.', 'path' => '/immobilien/magazin'],
|
||
['group' => 'immobilien', 'key' => 'about_hero', 'anchor' => 'seitenkopf', 'title' => 'Über B2in: Seitenkopf',
|
||
'description' => 'Überschrift und Einleitung unter /immobilien/ueber-b2in.', 'path' => '/immobilien/ueber-b2in'],
|
||
['group' => 'immobilien', 'key' => 'our_story', 'anchor' => 'geschichte', 'title' => 'Über B2in: Geschichte',
|
||
'description' => 'Der Geschichte-Block der Immobilien-Welt.', 'path' => '/immobilien/ueber-b2in'],
|
||
['group' => 'immobilien', 'key' => 'about_image_break', 'anchor' => 'bild', 'title' => 'Über B2in: Bildpause',
|
||
'description' => 'Bild zwischen Geschichte und Werten.', 'path' => '/immobilien/ueber-b2in'],
|
||
['group' => 'immobilien', 'key' => 'our_values', 'anchor' => 'werte', 'title' => 'Über B2in: Werte',
|
||
'description' => 'Die Werte-Kacheln der Immobilien-Welt.', 'path' => '/immobilien/ueber-b2in'],
|
||
['group' => 'faq', 'key' => 'faq_immobilien', 'anchor' => 'faq', 'title' => 'FAQ (Immobilien)',
|
||
'description' => 'Fragen und Antworten unter /immobilien/faq.', 'path' => '/immobilien/faq'],
|
||
['group' => 'contact', 'key' => 'contact_form_immobilien', 'anchor' => 'kontakt', 'title' => 'Kontaktformular (Immobilien)',
|
||
'description' => 'Abweichende Texte und Betreffe unter /immobilien/kontakt. Leere Felder übernehmen den Interior-Wert.', 'path' => '/immobilien/kontakt'],
|
||
],
|
||
],
|
||
|
||
'legal' => [
|
||
'title' => 'Rechtliches',
|
||
'path' => '/impressum',
|
||
'sections' => [
|
||
['group' => 'legal', 'key' => 'impressum', 'anchor' => null, 'title' => 'Impressum',
|
||
'description' => 'Pflichtangaben. Der Inhalt ist HTML.', 'path' => '/impressum'],
|
||
['group' => 'legal', 'key' => 'privacy', 'anchor' => null, 'title' => 'Datenschutz',
|
||
'description' => 'Datenschutzerklärung. Der Inhalt ist HTML.', 'path' => '/privacy'],
|
||
['group' => 'legal', 'key' => 'terms', 'anchor' => null, 'title' => 'AGB',
|
||
'description' => 'Allgemeine Geschäftsbedingungen. Der Inhalt ist HTML.', 'path' => '/terms'],
|
||
['group' => 'legal', 'key' => 'cookie_policy', 'anchor' => null, 'title' => 'Cookie-Hinweise',
|
||
'description' => 'Cookie-Richtlinie. Der Inhalt ist HTML.', 'path' => '/cookie-policy'],
|
||
],
|
||
],
|
||
|
||
],
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Sammelpunkt für alles, was in der Datenbank liegt, aber oben nicht steht
|
||
|--------------------------------------------------------------------------
|
||
*/
|
||
'unlisted' => [
|
||
'title' => 'Nicht mehr verwendet',
|
||
'description' => 'Sektionen stillgelegter Seiten (Netzwerk, Partner, alte Immobilien-Seite). Bleiben als Archiv liegen, erscheinen nirgends.',
|
||
],
|
||
];
|