Ergebnis 1 bis 2 von 2

Thema: details/summary Akkordion mit dem Inhaltselement Elementgruppe

  1. #1
    Contao-Fan Avatar von mdoll
    Registriert seit
    25.06.2009.
    Ort
    Wietze
    Beiträge
    374

    Standard details/summary Akkordion mit dem Inhaltselement Elementgruppe

    Moin,

    Ich wollte ein eigenes Inhaltselement haben, mit dem man die HTML-Elemente details und summary in Contao verwenden kann, weil ich ein Akkordeon-Element ganz ohne JavaScript haben wollte.
    Der einfachste Weg war für ein angepasstes Template für das Inhaltselement Elementgruppe.

    Ich habe im Template Studio eine Variante von content_element/elementgroup mit dem Namen details erstellt:

    Code:
    {% extends "@Contao/content_element/element_group.html.twig" %}
    
    {% set attributes = attrs()
        .addClass('content-element-details')
    %}
    
    {%- block inner %}
    <details name="{{ data.title }}">
        {% if headline.text %}
        <summary>
            {% block headline_inner %}
                {{ parent() }}
            {% endblock %}
        </summary>
        {% endif %}
       {% block content %}
            {% for fragment in nested_fragments %}
                {{ content_element(fragment) }}
            {% endfor %}
        {% endblock %}
    </details>
    {% endblock -%}
    Erläuterung:
    • Das name="{{ data.title }}" sorgt dafür, dass der Titel der Elementgruppe als name Attribut für details verwendet wird. Bei allen details-Elementen mit gleichem name Attribut kann immer nur eins zur Zeit geöffnet sein.
    • Die Überschrift aus der Elementgruppe kommt in den summary-Tag, wobei ich den Block headline_inner genommen habe, damit die Überschrift ohne h-Tag ausgegben wird (laut https://developer.mozilla.org/en-US/...ements/summary kann es mit h-Tag zu accessibility issues kommen).
    • Die Inhaltselemente innerhalb der Elementgruppe bilden dann den Inhalt des details/summary Akkordeons
    • Das Wrapper-div kriegt noch zusätzlich die CSS-Klasse "content-element-details"


    Als Twig-Anfänger weiß ich nicht, ob das ggf. eleganter geht. Falls ja, bin ich dankbar für Hinweise/Verbesserungen.

    Verwendung:
    • Inhaltselement 'Elementgruppe' erstellen, bei den Templateeinstellungen das angepasste Template wählen
    • Innerhalb der Elementgruppe die Inhaltselemente erstellen, die Inhalt des Akkordeons sein sollen
    • fertig ist ein Akkordeon-Element.


    Lässt sich mit CSS ganz gut stylen.

    Showcase: https://test.mathiasdoll.de/


    Gruß
    Mathias
    The idea is to die young as late as possible!

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.246
    Partner-ID
    10107

    Standard

    Code:
        {% block content %}
            {% for fragment in nested_fragments %}
                {{ content_element(fragment) }}
            {% endfor %}
        {% endblock %}
    könntest du noch mit
    Code:
    {{ block('content') }}
    ersetzen I think, ansonsten fällt mir spontan keine Verbesserung ein
    » sponsor me via GitHub or Revolut

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 4 (Registrierte Benutzer: 0, Gäste: 4)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •