Akkordeon mit FAQ-Markup

// src/Twig/AccordionExtension.php

namespace App\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;

class AccordionExtension extends AbstractExtension
{
    public function getFunctions(): array
    {
        return [
            new TwigFunction('jsonld_accordion', [$this, 'generateJsonLdAccordion']),
        ];
    }

    public function generateJsonLdAccordion(array $elements): array
    {
        $jsonLd = [
            "@context" => "https://schema.org",
            "@type" => "FAQPage",
            "mainEntity" => []
        ];

        foreach ($elements as $element) {
            // Remove HTML tags and line breaks
            $cleanedContent = strip_tags($element['content']);
            $cleanedContent = str_replace(["\n", "\r"], ' ', $cleanedContent);

            $jsonLd['mainEntity'][] = [
                "@type" => "Question",
                "name" => $element['header'],
                "acceptedAnswer" => [
                    "@type" => "Answer",
                    "text" => $cleanedContent
                ]
            ];
        }

        return $jsonLd;
    }
}

Navigation mit Bild/Icon ergänzt

// contao/dca/tl_page.php

use Contao\CoreBundle\DataContainer\PaletteManipulator;
use Contao\Config;

PaletteManipulator::create()
    ->addLegend('image_legend', 'meta_legend', PaletteManipulator::POSITION_BEFORE)
    ->addField('navigation_image', 'image_legend', PaletteManipulator::POSITION_APPEND)
    ->applyToPalette('default', 'tl_page')
    ->applyToPalette('regular', 'tl_page')
    ->applyToPalette('redirect', 'tl_page')
;

$GLOBALS['TL_DCA']['tl_page']['fields']['navigation_image'] = [
    'label'     => &$GLOBALS['TL_LANG']['tl_page']['navigation_image'],
    'exclude'   => true,
    'search'    => true,
    'flag'      => 1,
    'inputType' => 'fileTree',
    'eval'      => [
        'fieldType'  => 'radio',
        'files'      => true,
        'filesOnly'  => true,
        'extensions' => Config::get('validImageTypes')
    ],
    'sql'           => "blob NULL",
];