Umsetzung von AP0-AP6 aus dev/2026-08-28/entwicklungsplan.md sowie der vorab gefundenen Befunde T1 und B1-B13. Befunde - CmsContentSeeder überschrieb bei jedem Lauf alle redaktionellen Inhalte; jetzt Redaktionsschutz plus gezielter Relaunch-Seeder (B1) - Magazin-CMS war nicht ans Frontend angebunden, Artikel jetzt über Slugs mit 301 von den alten numerischen URLs (B2) - Vier veröffentlichte Display-Playlists zeigten auf b2in.test und wären live nicht ladbar gewesen (B13) - Info-Tablet speicherte geleerte Öffnungszeiten nicht (T1) - /service und /portfolio lieferten seit Februar 500 (B12) Website - Startseite neu strukturiert und umgetextet, eigene Seite /marken mit Detailseite je Kernmarke, /netzwerk und Altrouten leiten dorthin - Galerie je Marke, getrennt nach realisierten Projekten und Visualisierungen; ohne gesetzte Kategorie gilt ein Bild als Entwurf - Seite /referenzen, gespeist aus den Markengalerien - Showroom-Display im 9:16-Rahmen über eine schreibgeschützte Embed-Route ohne Preview-Token - Terminanfrage-Widget auf allen Seiten, Markenauswahl aus dem CMS, WhatsApp per Klick-zum-Chat-Link mit vorbereitetem Text - FAQ, Über-uns, Kontakt und Magazin inhaltlich auf Interior umgestellt Sonstiges - Vorschau-Instanzen liefern noindex und verlinken sich bei unbekanntem Host auf sich selbst statt auf eine fremde Domain - Seeder-Zugangsdaten aus dem Code in die Konfiguration (B8) - Ablauf für die Vorschau: dev/2026-08-28/preview-deployment.md 833 Tests grün (3084 Assertions), Pint sauber. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
139 lines
9.2 KiB
PHP
139 lines
9.2 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\CmsBrand;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
/**
|
||
* Legt die drei Kernmarken an. Texte aus dev/2026-08-28/umsetzung-inhalte.md §5.
|
||
*
|
||
* Bestehende Marken werden nicht überschrieben – Marcel pflegt sie im Admin.
|
||
* Logos, Stimmungsbilder und Galerien fehlen als Zulieferung und bleiben leer;
|
||
* die Kacheln und Detailseiten zeigen so lange einen Platzhalter.
|
||
*/
|
||
class CmsBrandSeeder extends Seeder
|
||
{
|
||
public function run(): void
|
||
{
|
||
$created = 0;
|
||
|
||
foreach ($this->brands() as $index => $data) {
|
||
if (CmsBrand::query()->where('slug', $data['slug'])->exists()) {
|
||
continue;
|
||
}
|
||
|
||
CmsBrand::query()->create(array_merge($data, ['order' => $index + 1]));
|
||
$created++;
|
||
}
|
||
|
||
$this->command?->info("Kernmarken: {$created} angelegt.");
|
||
}
|
||
|
||
/**
|
||
* @return array<int, array<string, mixed>>
|
||
*/
|
||
private function brands(): array
|
||
{
|
||
return [
|
||
[
|
||
'slug' => 'cabinet',
|
||
'name' => ['de' => 'CABINET', 'en' => 'CABINET'],
|
||
'tagline' => ['de' => 'Einbauschränke nach Maß.', 'en' => 'Fitted wardrobes made to measure.'],
|
||
'teaser' => [
|
||
'de' => 'Maßgefertigte Schranklösungen, geplant bis auf den Millimeter – gefertigt für Räume, in denen Standard nicht genügt.',
|
||
'en' => 'Bespoke wardrobe solutions, planned to the millimetre – built for rooms where standard will not do.',
|
||
],
|
||
'summary' => [
|
||
'de' => 'Wo Standardmaße an ihre Grenzen kommen, fängt CABINET an. Schranklösungen, die exakt in Ihren Raum geplant werden – von der Dachschräge über die Nische bis zur raumhohen Front. Gefertigt in der Qualität, die man erst beim zweiten Hinschauen ganz erfasst.
|
||
|
||
Erleben Sie die Möglichkeiten in unserem Showroom in Bielefeld.',
|
||
'en' => 'Where standard dimensions reach their limits, CABINET begins. Wardrobe solutions planned precisely for your room – from sloped ceilings and alcoves to full-height fronts. Built to a quality you only fully grasp on second look.
|
||
|
||
Experience the possibilities in our Bielefeld showroom.',
|
||
],
|
||
'highlights' => [
|
||
'Millimetergenaue Planung',
|
||
'Individuelle Fronten und Innenausstattung',
|
||
'Persönliche Beratung vor Ort',
|
||
],
|
||
'description' => [
|
||
'de' => '<p>CABINET steht für Einbaulösungen, die sich dem Raum anpassen statt umgekehrt. Jedes Element wird für seinen Platz geplant – vom Dachschrägenschrank bis zur raumhohen Garderobe. Gefertigt in Deutschland, montiert von Fachleuten, die den Unterschied zwischen „passt" und „sitzt" kennen.</p>',
|
||
'en' => '<p>CABINET stands for built-in solutions that adapt to the room rather than the other way round. Every element is planned for its place – from sloped-ceiling wardrobes to full-height hallway storage. Made in Germany, installed by specialists who know the difference between fitting and belonging.</p>',
|
||
],
|
||
'services' => [
|
||
['title' => 'Aufmaß vor Ort', 'description' => 'Wir messen millimetergenau in Ihren Räumen – Grundlage jeder Planung.'],
|
||
['title' => 'Individuelle Planung', 'description' => 'Grundriss, Nutzung und Stil bestimmen die Lösung, nicht der Katalog.'],
|
||
['title' => 'Fertigung in Deutschland', 'description' => 'Materialien und Verarbeitung, die auf Dauer angelegt sind.'],
|
||
['title' => 'Montage durch Fachleute', 'description' => 'Wir liefern und montieren – bis zum letzten Detail.'],
|
||
],
|
||
'showroom' => 'Showroom Bielefeld',
|
||
'is_published' => true,
|
||
],
|
||
[
|
||
'slug' => 'rotpunkt',
|
||
'name' => ['de' => 'Rotpunkt Küchen', 'en' => 'Rotpunkt Küchen'],
|
||
'tagline' => ['de' => 'Küchen, die Haltung zeigen.', 'en' => 'Kitchens with character.'],
|
||
'teaser' => [
|
||
'de' => 'Premium-Küchen aus deutscher Fertigung – individuell geplant, nachhaltig gedacht und gebaut für den Mittelpunkt Ihres Zuhauses.',
|
||
'en' => 'Premium kitchens made in Germany – individually planned, sustainably conceived and built for the heart of your home.',
|
||
],
|
||
'summary' => [
|
||
'de' => 'Premium-Küchen aus deutscher Fertigung – individuell geplant und gebaut für den Raum, in dem am meisten passiert. Rotpunkt steht für durchdachte Funktion, langlebige Materialien und einen Anspruch an Nachhaltigkeit, der über das Marketing hinausgeht.
|
||
|
||
Beratung und Planung in unserem Küchenstudio.',
|
||
'en' => 'Premium kitchens made in Germany – individually planned and built for the room where most of life happens. Rotpunkt stands for considered function, durable materials and a commitment to sustainability that goes beyond marketing.
|
||
|
||
Consultation and planning in our kitchen studio.',
|
||
],
|
||
'highlights' => [
|
||
'Fertigung in Deutschland',
|
||
'Individuelle Planung nach Ihrem Grundriss',
|
||
'Nachhaltige Materialien',
|
||
],
|
||
'description' => [
|
||
'de' => '<p>Die Küche ist der Raum, in dem sich das Leben sammelt. Rotpunkt fertigt sie in Deutschland, mit Blick auf Materialien, die halten, und auf eine Planung, die zum Alltag passt – nicht zum Prospekt. Wir begleiten von der ersten Skizze bis zur fertigen Küche.</p>',
|
||
'en' => '<p>The kitchen is where life gathers. Rotpunkt builds them in Germany, with an eye on materials that last and on planning that fits everyday life – not a brochure. We accompany you from the first sketch to the finished kitchen.</p>',
|
||
],
|
||
'services' => [
|
||
['title' => 'Küchenplanung', 'description' => 'Gemeinsam entwickeln wir Grundriss, Stauraum und Arbeitswege.'],
|
||
['title' => 'Nachhaltige Materialien', 'description' => 'Deutsche Fertigung mit Blick auf Herkunft und Langlebigkeit.'],
|
||
['title' => 'Geräte und Technik', 'description' => 'Passende Ausstattung, abgestimmt auf Ihre Art zu kochen.'],
|
||
['title' => 'Lieferung und Aufbau', 'description' => 'Koordiniert aus einer Hand, inklusive Anschluss.'],
|
||
],
|
||
'showroom' => 'Küchenstudio',
|
||
'is_published' => true,
|
||
],
|
||
[
|
||
'slug' => 'februe',
|
||
'name' => ['de' => 'Febrü', 'en' => 'Febrü'],
|
||
'tagline' => ['de' => 'Arbeiten, wo man gerne ist.', 'en' => 'Work where you like to be.'],
|
||
'teaser' => [
|
||
'de' => 'Möbel für konzentriertes Arbeiten – vom durchdachten Home-Office bis zur kompletten Büroeinrichtung.',
|
||
'en' => 'Furniture for focused work – from a well-considered home office to a complete office fit-out.',
|
||
],
|
||
'summary' => [
|
||
'de' => 'Ob Home-Office oder ganze Büroetage: Febrü macht Möbel für konzentriertes Arbeiten. Höhenverstellbare Tische, durchdachte Stauraumlösungen und Sitzmöbel, die auch nach acht Stunden noch überzeugen – mit einem Design, das ins Zuhause genauso passt wie ins Unternehmen.',
|
||
'en' => 'Whether a home office or a whole office floor: Febrü makes furniture for focused work. Height-adjustable desks, well-considered storage and seating that still convinces after eight hours – with a design that suits the home as much as the company.',
|
||
],
|
||
'highlights' => [
|
||
'Ergonomie, die man merkt',
|
||
'Vom einzelnen Arbeitsplatz bis zur Bürofläche',
|
||
'Für Zuhause und fürs Unternehmen',
|
||
],
|
||
'description' => [
|
||
'de' => '<p>Gutes Arbeiten beginnt beim Möbel. Febrü baut Tische, Stühle und Stauraum, die den Rücken entlasten und den Raum ordnen – zuerst für das Zuhause, in dem immer öfter gearbeitet wird, und ebenso für Büros und Unternehmen.</p>',
|
||
'en' => '<p>Good work begins with the furniture. Febrü builds desks, chairs and storage that relieve the back and bring order to a room – first for the home, where more and more work happens, and equally for offices and companies.</p>',
|
||
],
|
||
'services' => [
|
||
['title' => 'Home-Office', 'description' => 'Ein Arbeitsplatz, der sich ins Zuhause fügt statt es zu besetzen.'],
|
||
['title' => 'Ergonomie', 'description' => 'Höhenverstellbare Tische und Sitzlösungen für langes Arbeiten.'],
|
||
['title' => 'Büroeinrichtung', 'description' => 'Vom einzelnen Arbeitsplatz bis zur kompletten Fläche.'],
|
||
['title' => 'Akustik und Ordnung', 'description' => 'Stauraum und Raumgliederung, die Konzentration ermöglichen.'],
|
||
],
|
||
'showroom' => '',
|
||
'is_published' => true,
|
||
],
|
||
];
|
||
}
|
||
}
|