From bfe73ab2329dfe62ed1ca95b486c0c12dc7b182e Mon Sep 17 00:00:00 2001
From: "michael.danielczok" <michael@pcsg.de>
Date: Sun, 10 Dec 2023 14:27:00 +0100
Subject: [PATCH] fix(faq category page): correctly create the JSON-LD-Schema
 code

---
 types/category.php | 53 ++++++++++++++++++++++++++++++++++------------
 1 file changed, 40 insertions(+), 13 deletions(-)

diff --git a/types/category.php b/types/category.php
index 519189a..c87fd8d 100644
--- a/types/category.php
+++ b/types/category.php
@@ -4,39 +4,66 @@ $entries = $Site->getChildren([
     'type' => 'quiqqer/faq:types/entry'
 ]);
 
-$faqTemplate          = 'default';
-$offset               = false;
-$FAQControl           = null;
+$faqTemplate = 'default';
+$offset = false;
+$FAQControl = null;
 $useFaqStructuredData = $Site->getAttribute('quiqqer.faq.settings.useFaqStructuredData');
-$faqStructuredData    = ''; // html string
+$faqStructuredData = ''; // html string
 
 switch ($Site->getAttribute('quiqqer.faq.settings.template')) {
     case 'accordion':
         $faqTemplate = 'accordion';
 
         $FAQControl = new \QUI\FAQ\Controls\Accordion([
-            'max'                  => 50,
-            'stayOpen'             => $Site->getAttribute('quiqqer.faq.settings.accordion.stayOpen'),
-            'parentSite'           => $Site,
+            'max' => 50,
+            'stayOpen' => $Site->getAttribute('quiqqer.faq.settings.accordion.stayOpen'),
+            'parentSite' => $Site,
             'useFaqStructuredData' => $useFaqStructuredData
         ]);
 
         break;
     case 'default':
     default:
-        $offset      = intval($Site->getAttribute('quiqqer.faq.settings.offset'));
+        $offset = intval($Site->getAttribute('quiqqer.faq.settings.offset'));
         $faqTemplate = 'default';
         if ($useFaqStructuredData) {
-            $FAQControl        = new QUI\Bricks\Controls\Accordion();
+            $jsonSchemaEntries = [];
+
+            foreach ($entries as $FaqSite) {
+                $short = $FaqSite->getAttribute('short');
+                $content = $FaqSite->getAttribute('content');
+
+                if ($short) {
+                    $short = '<div class="quiqqer-faqAccordion-item-content-pageShort text-muted">' . $short . '</div>';
+                }
+
+                if ($content) {
+                    $content = '<div class="quiqqer-faqAccordion-item-content-pageContent">' . $content . '</div>';
+                }
+
+                $entryContent = $short . $content;
+
+                $entry = [
+                    'entryTitle' => $FaqSite->getAttribute('title'),
+                    'entryContent' => $entryContent,
+                ];
+
+                $jsonSchemaEntries[] = $entry;
+            }
+
+            $FAQControl = new QUI\Bricks\Controls\Accordion([
+                'entries' => $jsonSchemaEntries
+            ]);
+
             $faqStructuredData = $FAQControl->createJSONLDFAQSchemaCode();
         }
         break;
 }
 
 $Engine->assign([
-    'entries'           => $entries,
-    'faqTemplate'       => $faqTemplate,
-    'offset'            => $offset,
-    'FAQControl'        => $FAQControl,
+    'entries' => $entries,
+    'faqTemplate' => $faqTemplate,
+    'offset' => $offset,
+    'FAQControl' => $FAQControl,
     'faqStructuredData' => $faqStructuredData
 ]);
-- 
GitLab