Hi Leute,
wie lassen sich in der neuen Contao 5.3 Accordion-Version HTML in der Bereichsüberschrift eines Accordions umsetzen?
Hi Leute,
wie lassen sich in der neuen Contao 5.3 Accordion-Version HTML in der Bereichsüberschrift eines Accordions umsetzen?
Beim Lesen deiner Nachricht muss ich schon anfangen zu überlegen was du meinst.
Magst du mal genau erklären was du vorhast? Gerne mit Beispielen und Screenshots.
Wenn ich Dich richtig verstehe, dann dürfte Dir prinzipiell der Beitrag weiterhelfen https://contao-academy.de/blog/html-...iften-zulassen.
Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
Unterstütze bitte das Contao-Projekt (Button Links)
Weitere Spendenmöglichkeiten
------------------------------------------------------------------------------------------------------
Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
Contao-Online-Video-Kurse: Contao Academy
Funktionalität erweitern: Contao-Erweiterungen
Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.
Unbenannt-3.jpgGerne mit Beispielen und Screenshots.
Das HTML wir nicht umgesetzt..
In den Einstellungen:Wenn ich Dich richtig verstehe, dann dürfte Dir prinzipiell der Beitrag weiterhelfen https://contao-academy.de/blog/html-...iften-zulassen.
Unbenannt-5.jpg
in der contao/dca/tl_content.php
und im Template _headline.html.twig wurde das hier eingefügt:PHP-Code:<?php
/* HTML in Überschriften zulassen */
$GLOBALS['TL_DCA']['tl_content']['fields']['headline']['eval']['allowHtml'] = true;
Aber in den Inhaltselement Accordion > Bereichsüberschriften wird das HTML in Überschriften nicht umgesetzt..PHP-Code:{% block headline_inner %}
{{ headline.text|insert_tag_raw|raw }}
{% endblock %}
Symfony Cache gelehrt?
Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
Unterstütze bitte das Contao-Projekt (Button Links)
Weitere Spendenmöglichkeiten
------------------------------------------------------------------------------------------------------
Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
Contao-Online-Video-Kurse: Contao Academy
Funktionalität erweitern: Contao-Erweiterungen
Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.
Ich klinke mich hier mal ein, da es scheinbar nicht wie funktioniert. Auch ich würde gerne html, z. B. <span> in der Überschrift des Accordions (Verschiedenes -> Accordion) nutzen.
Contao 5.3.54
Unter Layout -> Templates das Template _headline.html.twig
Ordner mit Datei erstellt /contao/dca/tl_content.php:Code:{% use "@Contao/component/_headline.html.twig" %} {# Der Block headline_inner wird um die nötigen Filter ergänzt. #} {% block headline_inner %} {{ headline.text|insert_tag_raw|raw }} {% endblock %}
Symphony Cache erneuert. Accordion-Element neu angelegt. <span>test</span> wird im Frontend mit angezeigt.Code:<?php /* HTML in Überschriften */ $GLOBALS['TL_DCA']['tl_content']['fields']['headline']['eval']['allowHtml'] = true;
Bei "normalen" Überschriften funktioniert es allerdings.
Wo ist der Fehler?
Falls Du den Toggler des Accordions meinst, schaut mal in Deinen Code. Standardmäßig sind das keine Überschriften.
Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
Unterstütze bitte das Contao-Projekt (Button Links)
Weitere Spendenmöglichkeiten
------------------------------------------------------------------------------------------------------
Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
Contao-Online-Video-Kurse: Contao Academy
Funktionalität erweitern: Contao-Erweiterungen
Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.
Wenn du die "Bereichsüberschrift" meinst, dann wäre das im DCA das Feld sectionHeadline und nicht headline.
Und dazu musst du dann den element_header Block im Template content_element/accordion.html.twig anpassen, und nicht das component/_headline.html.twig Template.
Ja genau, ich meine die Bereichsüberschrift. Ausgegeben wird das als h3-button ->
Kannst Du mir bitte sagen, was in das Template gehört, damit er das entsprechend erlaubt?Code:<h3 class="handorgel__header" id="handorgel1-fold1-header"> <button class="handorgel__header__button" type="button" aria-controls="handorgel1-fold1-content" aria-expanded="false" aria-disabled="false">Bereichsüberschrift</button> </h3>
Ich weiss nicht, ob das ein korrekter Weg ist ... aber mit einem Twig-Filter lässt sich dies ebenfalls lösen:
Twig-Filter erstellen:
und das Accordion-Twig anpassen:PHP-Code:<?php
// src/Twig/HtmlDecodeExtension.php
namespace App\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
class HtmlDecodeExtension extends AbstractExtension
{
public function getFilters(): array
{
return [
new TwigFilter('html_decode', fn ($s) => html_entity_decode((string) $s, ENT_QUOTES | ENT_HTML5, 'UTF-8')),
];
}
}
wobei hier dann bei {{- element.header|html_decode|raw -}} der vorher erstellt Filter Anwendung findet.Code:{% extends "@Contao/content_element/accordion.html.twig" %} {% block element_header %} {% set accordion_header_attributes = attrs() .addClass('handorgel__header') .mergeWith(accordion_header_attributes|default) %} <{{ element.header_tag }}{{ accordion_header_attributes }}> {% set accordion_header_button_attributes = attrs() .addClass('handorgel__header__button') .set('type', 'button') .mergeWith(accordion_header_button_attributes|default) %} <button{{ accordion_header_button_attributes }}> {{- element.header|html_decode|raw -}} </button> </{{ element.header_tag }}> {% endblock %}
Grüsse
Bernhard
Danke DerRenner, aber ich denke es muss auch direkt gehen. So ist mein Ansatz, der will aber nicht greifen. Vielleicht sieht ja jemand einen Fehler?
Code:{% extends "@Contao/content_element/accordion.html.twig" %} {% block element %} {# Nur die Header-Ausgabe überschreiben #} {% block element_header %} {% set accordion_header_attributes = attrs() .addClass('handorgel__header') .mergeWith(accordion_header_attributes|default) %} <{{ element.header_tag }}{{ accordion_header_attributes }}> {% set accordion_header_button_attributes = attrs() .addClass('handorgel__header__button') .set('type', 'button') .mergeWith(accordion_header_button_attributes|default) %} <button{{ accordion_header_button_attributes }}> {{ element.header|raw }} </button> </{{ element.header_tag }}> {% endblock %}
Das DCA hatte ich tatsächlich vergessen. Jetzt ist HTML im Accordion-Trigger erlaubt. Danke Euch!
Nach ein wenig Recherche bin ich nun fündig geworden. Zusammenfassend die gesamte Lösung erklärt:
Template anlegen: content_element/accordion.html.twig
Hier wurde lediglich folgende Änderung vorgenommen: {{- element.header|raw -}}HTML-Code:{% extends "@Contao/content_element/accordion.html.twig" %} {% block element_header %} {% set accordion_header_attributes = attrs() .addClass('handorgel__header') .mergeWith(accordion_header_attributes|default) %} <{{ element.header_tag }}{{ accordion_header_attributes }}> {% set accordion_header_button_attributes = attrs() .addClass('handorgel__header__button') .set('type', 'button') .mergeWith(accordion_header_button_attributes|default) %} <button{{ accordion_header_button_attributes }}> {{- element.header|raw -}} </button> </{{ element.header_tag }}> {% endblock %}
Der Rest etspricht der Vorlage: https://github.com/contao/contao/blo...dion.html.twig
Im Anschluss /contao/dca/tl_content.php anlegen bzw. ergänzen:
Sofern die Anpassung für sonstige Überschriften bereits vorgenommen wurde, so müsste die ZeilePHP-Code:<?php
// contao/dca/tl_content.php
$GLOBALS['TL_DCA']['tl_content']['fields']['sectionHeadline']['eval']['allowHtml'] = true;bereits vorhanden sein.PHP-Code:$GLOBALS['TL_DCA']['tl_content']['fields']['headline']['eval']['allowHtml'] = true;
Das sectionHeadline konnte ich mir aus der SQL-Datenbank raussuchen.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)