FAQ im Inhalte-Editor vollständig bearbeitbar: Bereich je Frage statt verschachtelter sections

Die Bereiche der FAQ-Seite lagen als verschachtelte Listen in sections, der Editor zeigte
davon nur JSON-Text. Jetzt stehen alle Fragen in questions mit dem Feld category, Überschrift
und Symbol der Bereiche in categories. FAQ::groups baut daraus die Seite (allgemeine Fragen
zuerst), alte Einträge werden weiter dargestellt. FaqCategoriesSeeder stellt gespeicherte
Einträge um (FAQ und Immobilien-FAQ), Texte bleiben.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-09 09:50:44 +00:00
parent 69d50eed0f
commit dc31cdb401
8 changed files with 406 additions and 208 deletions

View file

@ -0,0 +1,44 @@
<?php
namespace Database\Seeders;
use App\Livewire\Web\Components\Sections\FAQ;
use FluxCms\Core\Models\CmsContent;
use FluxCms\Core\Services\CmsContentService;
use Illuminate\Database\Seeder;
/**
* FAQ im Inhalte-Editor vollständig bearbeitbar machen (09.10.2026).
*
* Die Bereiche der FAQ-Seite („Für Ihr Zuhause“, „Für Projekte und Objekte“) lagen verschachtelt
* in `sections`, je mit eigener Fragenliste – der Editor zeigte davon nur JSON-Text. Jetzt steht
* jede Frage in `questions` und trägt ihren Bereich in `category`; Überschrift und Symbol der
* Bereiche stehen in `categories`. Texte und Reihenfolge bleiben, wie sie gepflegt sind.
* Bereits umgestellte Einträge bleiben unberührt, mehrfaches Ausführen ist unbedenklich.
*
* php artisan db:seed --class=FaqCategoriesSeeder
*/
class FaqCategoriesSeeder extends Seeder
{
public function run(): void
{
$changed = 0;
foreach (CmsContent::query()->where('group', 'faq')->whereIn('key', ['faq', 'faq_immobilien'])->get() as $row) {
$value = $row->getTranslations('value');
$updated = array_map(fn (mixed $content): mixed => is_array($content) ? FAQ::flatten($content) : $content, $value);
if ($updated !== $value) {
$row->value = $updated;
$row->save();
$changed++;
}
}
if ($changed > 0) {
app(CmsContentService::class)->clearCache('faq');
}
$this->command?->info("FAQ: {$changed} Einträge auf Bereiche je Frage umgestellt.");
}
}

View file

@ -57,6 +57,7 @@ class InteriorReleaseSeeder extends Seeder
HeroTrustItemsSeeder::class,
HomeVisionTitleSeeder::class,
ContentCorrections20261008Seeder::class,
FaqCategoriesSeeder::class,
// Zuletzt: fehlende Felder ergänzen, verwendete Bilder in die Mediathek.
CmsSectionFieldsSeeder::class,
AssetMediaImportSeeder::class,