b2in/database/factories/CmsArticleFactory.php
Kevin Adametz 7953a8c9a1 Interior-Farbwelt, Welten-Trennung, Tischlerei und Herkunfts-Sektion
Arbeitsplan 14.09.2026, Punkte 1.1 bis 1.4 (Nachträge 6 bis 10 im Entwicklungsplan):

- Farbwelt Interior (Tanne, Creme, Sand, Ocker, Clay) als Standard, Immobilien-Welt
  behält das bisherige Blau über body.world-immobilien; Logo je Welt, Favicons neu,
  Welten-Wechsler in Kopf- und Fußzeile.
- Saubere Trennung der Welten: eigene Navigation, Ankündigungsleiste, Magazinliste,
  Über-uns-Seite, FAQ, Kontaktseite und Abschluss-CTA für Immobilien; Beiträge tragen
  eine Welt (Migration + Admin-Feld). Abschluss-CTA Ton in Ton statt Grün-zu-Ocker.
- Kontakt: Betreffe in Gruppen Interior / Immobilien / B2in, Marken darin.
  Terminanfrage-Buttons öffnen das Widget mit vorgewähltem Anliegen; Select-Felder
  einheitlich gestaltet.
- Tischlerei als vierte Kernmarke (Platzhalter), Kachelraster 2×2.
- Herkunfts-Sektion „Aus der Region gefertigt“ mit schematischer Standortkarte und
  Ablauf CABINET (Beratung Bielefeld, Fertigung Köln, Aufbau mit Tischlerei).

Deployment: migrate, WorldSplitCmsSeeder, CmsBrandSeeder, OriginSectionCmsSeeder
(Abschnitt 8 im Entwicklungsplan).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 12:46:41 +00:00

60 lines
1.9 KiB
PHP

<?php
namespace Database\Factories;
use App\Models\CmsArticle;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
/**
* @extends Factory<CmsArticle>
*/
class CmsArticleFactory extends Factory
{
protected $model = CmsArticle::class;
public function definition(): array
{
$title = fake()->sentence(6);
return [
'slug' => Str::slug($title).'-'.fake()->unique()->numberBetween(100, 999),
'title' => $title,
'subtitle' => fake()->sentence(12),
'image' => 'b2in/magazin-'.fake()->numberBetween(1, 5).'.jpg',
'category' => fake()->randomElement(['Dubai Investment', 'Rendite & Einrichtung', 'B2B & Partner', 'Einrichtung & Netzwerk']),
'world' => CmsArticle::WORLD_INTERIOR,
'date_label' => fake()->date('F j, Y'),
'read_time' => fake()->numberBetween(3, 10).' min read',
'author' => [
'name' => fake()->name(),
'bio' => fake()->sentence(15),
'avatar' => 'b2in/marcel-scheibe.jpg',
],
'content' => ['de' => [
'intro' => fake()->paragraph(3),
'sections' => [
['title' => fake()->sentence(5), 'content' => fake()->paragraph(4)],
['title' => fake()->sentence(5), 'content' => fake()->paragraph(4)],
['title' => fake()->sentence(5), 'content' => fake()->paragraph(4)],
],
]],
'is_published' => true,
'order' => 0,
];
}
public function published(): static
{
return $this->state(fn (array $attributes) => [
'is_published' => true,
]);
}
public function unpublished(): static
{
return $this->state(fn (array $attributes) => [
'is_published' => false,
]);
}
}