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:
parent
69d50eed0f
commit
dc31cdb401
8 changed files with 406 additions and 208 deletions
44
database/seeders/FaqCategoriesSeeder.php
Normal file
44
database/seeders/FaqCategoriesSeeder.php
Normal 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.");
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue