Nachtrag 11: Herkunfts-Sektion liest Ort, Entfernung und Rolle aus der Markenverwaltung (drei neue Felder an cms_brands, BrandOriginSeeder), Kartenpositionen im Code, „Marken“ in der Sidebar. Nachtrag 12: Inhalte-Editor zeigt die Seiten der Website mit ihren Sektionen in Reihenfolge (config/cms_pages.php, CmsPageTree), Felder in Klartext, fehlende Sektionen aus der Sprachdatei anlegbar, Vorschau der echten Seite im iframe mit Sprung zur Sektion; Anker an allen lebenden Sektionen nachgezogen. Nachtrag 13: Referenzen als eigenes Modul (CmsReference, Portal-Seite, /referenzen mit Fallback auf die Markengalerien); Immobilien-Projekte aus Sidebar und CMS-Übersicht genommen, Route bleibt. Dazu .gitignore für _b2in_interior_shop/ und docs/. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
255 lines
19 KiB
PHP
255 lines
19 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\CmsBrand;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
/**
|
||
* Legt die Kernmarken an. Texte aus dev/2026-08-28/umsetzung-inhalte.md §5.
|
||
*
|
||
* Die vierte Marke „Tischlerei“ (Arbeitsplan 14.09.2026, Punkt 1.2) ist ein **Platzhalter**:
|
||
* Name, Logo, Basisinfos und Bilder liegen noch nicht vor. Die Texte folgen der inhaltlichen
|
||
* Ausrichtung aus dem Plan (Aufbau, Sonderlösungen, Veredelung, Maßarbeit – ergänzt CABINET
|
||
* und Rotpunkt, steht nicht daneben) und sollen als Denkanstoß dienen. Der Name des
|
||
* Partnerbetriebs gehört laut Plan auf die Detailseite, nicht in die Marke.
|
||
*
|
||
* Bestehende Marken werden nicht überschrieben – Marcel pflegt sie im Admin. Für bereits
|
||
* angelegte Marken setzt {@see BrandLogoSeeder} die Logos nach und {@see BrandOriginSeeder}
|
||
* den Fertigungsort für die Herkunfts-Sektion (Nachtrag 11).
|
||
*
|
||
* 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',
|
||
'logo' => 'marken/cabinet.svg',
|
||
'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',
|
||
'origin_city' => ['de' => 'Köln', 'en' => 'Cologne'],
|
||
'origin_distance' => ['de' => 'rund 200 km', 'en' => 'about 200 km'],
|
||
'origin_role' => [
|
||
'de' => 'Gefertigt in der Kölner Manufaktur, beraten und geplant im CABINET Store Bielefeld.',
|
||
'en' => 'Made in the Cologne manufactory, advised and planned at the CABINET Store Bielefeld.',
|
||
],
|
||
'is_published' => true,
|
||
],
|
||
[
|
||
'slug' => 'rotpunkt',
|
||
'logo' => 'marken/rotpunkt.svg',
|
||
'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',
|
||
'origin_city' => ['de' => 'Bünde', 'en' => 'Bünde'],
|
||
'origin_distance' => ['de' => 'rund 30 km', 'en' => 'about 30 km'],
|
||
'origin_role' => [
|
||
'de' => 'Küchen aus eigener Fertigung in Bünde – geplant bei uns im Küchenstudio.',
|
||
'en' => 'Kitchens from their own production in Bünde – planned with us in the kitchen studio.',
|
||
],
|
||
'is_published' => true,
|
||
],
|
||
[
|
||
'slug' => 'februe',
|
||
'logo' => 'marken/februe.png',
|
||
'name' => ['de' => 'Febrü', 'en' => 'Febrü'],
|
||
'tagline' => ['de' => 'Arbeiten, wo man gerne bleibt.', 'en' => 'Work where you like to stay.'],
|
||
'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' => '',
|
||
'origin_city' => ['de' => 'Herford', 'en' => 'Herford'],
|
||
'origin_distance' => ['de' => 'rund 20 km', 'en' => 'about 20 km'],
|
||
'origin_role' => [
|
||
'de' => 'Büro- und Objektmöbel aus eigener Fertigung in Herford.',
|
||
'en' => 'Office and contract furniture from their own production in Herford.',
|
||
],
|
||
'is_published' => true,
|
||
],
|
||
[
|
||
// ⚠️ Platzhalter – siehe Klassenkommentar. Slug bleibt stabil, auch wenn der Name kommt.
|
||
'slug' => 'tischlerei',
|
||
'logo' => '',
|
||
'name' => ['de' => 'Tischlerei', 'en' => 'Joinery'],
|
||
'tagline' => ['de' => 'Maßarbeit, die den Raum vollendet.', 'en' => 'Craftsmanship that completes the room.'],
|
||
'teaser' => [
|
||
'de' => 'Aufbau, Sonderlösungen und Veredelung aus einer Tischlerei in Ostwestfalen – dort, wo Serienmöbel aufhören und Ihr Raum anfängt.',
|
||
'en' => 'Assembly, bespoke solutions and finishing from a joinery in East Westphalia – where series furniture ends and your room begins.',
|
||
],
|
||
'summary' => [
|
||
'de' => 'Manche Stellen im Raum passen in keinen Katalog: die Nische neben dem Kamin, der Übergang von der Küche zum Sideboard, das Regal unter der Treppe. Unsere Tischlerei baut, was dort fehlt – und veredelt, was schon da ist.
|
||
|
||
Sie ergänzt CABINET und Rotpunkt dort, wo Fertigung nach Zeichnung gefragt ist: Aufbau vor Ort, Sonderlösungen nach Aufmaß, Oberflächen und Anpassungen aus einer Hand.',
|
||
'en' => 'Some spots in a room fit no catalogue: the alcove next to the fireplace, the transition from kitchen to sideboard, the shelf under the stairs. Our joinery builds what is missing there – and refines what is already in place.
|
||
|
||
It complements CABINET and Rotpunkt wherever making to drawing is required: assembly on site, bespoke solutions to measure, surfaces and adaptations from a single source.',
|
||
],
|
||
'highlights' => [
|
||
'Sonderlösungen nach Aufmaß und Zeichnung',
|
||
'Veredelung und Anpassung bestehender Möbel',
|
||
'Aufbau und Montage aus einer Hand',
|
||
],
|
||
'description' => [
|
||
'de' => '<p>Eine Küche endet nicht an der letzten Front, ein Einbauschrank nicht an der Wand. Dazwischen liegen die Details, die einen Raum fertig machen: eine Blende, die den Übergang schließt, ein Regal, das genau in die Nische passt, eine Oberfläche, die zum Boden passt. Unsere Tischlerei fertigt diese Details in Ostwestfalen – nach Zeichnung, nach Aufmaß, in Abstimmung mit den Marken, die den Raum tragen.</p>',
|
||
'en' => '<p>A kitchen does not end at the last front, a fitted wardrobe not at the wall. In between lie the details that finish a room. Our joinery makes these details in East Westphalia – to drawing, to measure, in tune with the brands that carry the room.</p>',
|
||
],
|
||
'services' => [
|
||
['title' => 'Aufbau und Montage', 'description' => 'Fachgerechter Aufbau vor Ort – auch von Möbeln, die nicht von uns stammen.'],
|
||
['title' => 'Sonderlösungen', 'description' => 'Nischen, Schrägen, Übergänge: gefertigt nach Aufmaß, wo Standard nicht passt.'],
|
||
['title' => 'Veredelung', 'description' => 'Oberflächen, Fronten und Griffe – bestehende Möbel aufwerten statt ersetzen.'],
|
||
['title' => 'Maßarbeit', 'description' => 'Einzelstücke nach Zeichnung: Regale, Sideboards, Garderoben, Tische.'],
|
||
],
|
||
'widget_label' => ['de' => 'Persönliche Beratung zur Maßarbeit vereinbaren', 'en' => 'Arrange a personal consultation on bespoke work'],
|
||
'cta_title' => ['de' => 'Ihr Raum. Bis ins Detail gefertigt.', 'en' => 'Your room. Made down to the detail.'],
|
||
'cta_text' => [
|
||
'de' => 'Ob ein einzelnes Regal in der Nische oder die Anpassung einer ganzen Einrichtung: Wir schauen uns Ihren Raum an und sagen Ihnen, was sich fertigen lässt – und was sich lohnt. Persönlich, vor Ort und mit einer Werkstatt, die wir kennen.',
|
||
'en' => 'Whether a single shelf in an alcove or the adaptation of an entire interior: we look at your room and tell you what can be made – and what is worth it.',
|
||
],
|
||
'sections' => [
|
||
[
|
||
'title' => 'Wo Serienmöbel aufhören.',
|
||
'paragraphs' => [
|
||
'Die meisten Räume sind nicht rechtwinklig, nicht genormt und nicht leer. Sie haben Heizkörper, Fensterbänke, Schrägen und Möbel, die bleiben sollen. Genau dort beginnt die Arbeit der Tischlerei: mit einem Aufmaß, einer Zeichnung und der Frage, was der Raum wirklich braucht.',
|
||
'Das kann ein einzelnes Möbelstück sein, eine Anpassung an ein bestehendes oder ein Detail, das zwei Marken miteinander verbindet.',
|
||
],
|
||
'detail' => [
|
||
'title' => 'Beispiele aus dem Alltag',
|
||
'paragraphs' => [
|
||
'Ein Sideboard, das die Flucht der Rotpunkt-Küche aufnimmt und im Wohnzimmer weiterführt. Eine Blende, die den Spalt zwischen CABINET-Schrank und Dachschräge schließt. Ein Regal unter der Treppe, das die Tiefe der Stufen nutzt. Eine Bank am Fenster mit Stauraum darunter.',
|
||
'Nichts davon steht in einem Katalog. Alles davon lässt sich fertigen.',
|
||
],
|
||
],
|
||
'claim' => 'Gefertigt nach Raum, nicht nach Norm.',
|
||
],
|
||
[
|
||
'title' => 'Ergänzung, nicht Konkurrenz.',
|
||
'paragraphs' => [
|
||
'CABINET plant Einbauschränke bis auf den Millimeter, Rotpunkt baut Küchen, Febrü richtet Arbeitsplätze ein. Die Tischlerei steht nicht daneben, sondern dazwischen: Sie fertigt die Übergänge, die Sonderteile und die Einzelstücke, mit denen aus drei Marken ein durchgängiger Raum wird.',
|
||
],
|
||
'detail' => [
|
||
'title' => 'Aus der Region gefertigt',
|
||
'paragraphs' => [
|
||
'Die Werkstatt liegt in Ostwestfalen, wenige Kilometer von Bielefeld. Kurze Wege bedeuten kurze Abstimmungen: Aufmaß, Muster und Montage kommen aus einer Hand, und wenn etwas nicht passt, ist die Werkstatt erreichbar – nicht ein Callcenter.',
|
||
],
|
||
],
|
||
'claim' => 'Vier Marken. Ein Raum. Ein Ansprechpartner.',
|
||
],
|
||
[
|
||
'title' => 'Veredeln statt ersetzen.',
|
||
'paragraphs' => [
|
||
'Nicht jedes Möbel muss neu sein. Ein guter Korpus mit neuen Fronten, eine geölte statt lackierte Oberfläche, neue Griffe und eine passende Innenaufteilung – oft ist das die nachhaltigere und die schönere Lösung.',
|
||
'Wir sagen Ihnen ehrlich, wann sich eine Veredelung lohnt und wann nicht.',
|
||
],
|
||
'claim' => 'Was gut ist, darf bleiben – und besser werden.',
|
||
],
|
||
],
|
||
'showroom' => '',
|
||
'origin_city' => ['de' => 'Rheda-Wiedenbrück', 'en' => 'Rheda-Wiedenbrück'],
|
||
'origin_distance' => ['de' => 'rund 35 km', 'en' => 'about 35 km'],
|
||
'origin_role' => [
|
||
'de' => 'Unsere Werkstatt für Aufbau, Sonderlösungen und Veredelung.',
|
||
'en' => 'Our workshop for assembly, custom solutions and finishing.',
|
||
],
|
||
'is_published' => true,
|
||
],
|
||
];
|
||
}
|
||
}
|