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>
51 lines
1.4 KiB
PHP
51 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Web\Components\Sections;
|
|
|
|
use App\Models\CmsArticle;
|
|
use Livewire\Component;
|
|
|
|
class MagazinList extends Component
|
|
{
|
|
public $posts = [];
|
|
|
|
public $content = [];
|
|
|
|
/** Farbwelt der Liste: `interior` (/magazin) oder `immobilien` (/immobilien/magazin). */
|
|
public string $world = CmsArticle::WORLD_INTERIOR;
|
|
|
|
public function mount(string $world = CmsArticle::WORLD_INTERIOR)
|
|
{
|
|
$this->world = in_array($world, CmsArticle::WORLDS, true) ? $world : CmsArticle::WORLD_INTERIOR;
|
|
$this->loadPosts();
|
|
$this->loadThemeContent();
|
|
}
|
|
|
|
private function loadPosts()
|
|
{
|
|
$this->posts = collect(CmsArticle::forFrontend($this->world))->map(function (array $article) {
|
|
return [
|
|
'slug' => $article['slug'],
|
|
'title' => $article['title'],
|
|
'excerpt' => $article['content']['intro'] ?? '',
|
|
'image' => $article['image'],
|
|
'date' => $article['date'],
|
|
'readTime' => $article['readTime'],
|
|
];
|
|
})->values()->all();
|
|
}
|
|
|
|
private function loadThemeContent()
|
|
{
|
|
$this->content = cms_theme_section(
|
|
$this->world === CmsArticle::WORLD_IMMOBILIEN ? 'magazin_list_immobilien' : 'magazin_list'
|
|
);
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.web.components.sections.magazin-list', [
|
|
'posts' => $this->posts,
|
|
]);
|
|
}
|
|
}
|