Ergebnis 1 bis 5 von 5

Thema: Mehrer Artikel mit je nur einem Akkordeon in Contao 5.3

  1. #1
    Alter Contao-Hase
    Registriert seit
    12.10.2010.
    Beiträge
    1.145

    Standard Mehrer Artikel mit je nur einem Akkordeon in Contao 5.3

    Hallo Leute,

    Ich habe in Contao 5.3 auf einer Seite mehrere Artikel angelegt.
    Pro Artikel ist ein einzelnes Akkordeon enthalten.

    Wenn im Frontend ein Akkordeon geöffnet wird / aufklappt, und man ein weiteres Akkordeon öffnet, dann bleibt das schon geöffnete Akkordenen aufgeklappt und schließt sich nicht automatisch. Somit sind dann zwei Akkordeons aufklappt.

    Wie kann man das so lösen, daß immer nur ein Akkordeon aufklappt? Also beim Öffnen eine weiteren Akkordeon das bisher geöffnete automatisch schließt?

    Hier die Beispielseite

  2. #2
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.948
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Kann das Beispiel nicht öffnen, da es ewig lange bei mir lädt (Mobiles Netz und in der Bahn, Seite womöglich nicht optimiert für mobile).

    Laut Readme kannst du aber auf die Instanzen zugreifen und auf allen einem Eventlistener auf dem Fold registrieren. Entsprechend schließt du dann alle anderen sich auf der Seite befindlichen Instanzen / Handorgel-accordions:
    https://github.com/oncode/handorgel

  3. #3
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    3.058
    Partner-ID
    werbepanorama
    Contao-Projekt unterstützen

    Support Contao

    Standard

    einen ähnlichen Anwendungsfall hatte ich mal in einem Projekt (... das Projekt ist leider nicht mehr öffentlich zugänglich)
    Schau mal, ob du hiermit dein Auslangen findest.

    Soweit ich mich aber erinnern kann, hat das auch Einfluss auf die anderen angelegten Akkordeons, sodass ich das dann projektweit gleich direkt über die /templates/content_element/accordion.html.twig laufen liess.

    PHP-Code:
    {% extends "@Contao/content_element/accordion.html.twig" %}

    {% 
    block script %}
      {% 
    add "handorgel_js" to body %}
        {% 
    set script_attributes attrs()
          .
    setIfExists('nonce'csp_nonce('script-src'))
          .
    mergeWith(script_attributes|default)
        %}
        <
    script src="{{ asset('js/handorgel.min.js', 'contao-components/handorgel') }}"></script>
        <script{{ script_attributes }}>
          (function () {
            const instances = [];

            document.querySelectorAll('.content-accordion').forEach((el) => {
              const acc = new handorgel(el, {
                {% block init_options %}
                  multiSelectable: false,
                  {# Put custom options here #}
                {% endblock %}
              });

              instances.push(acc);

              acc.on('fold:open', () => {
                instances.forEach((other) => {
                  if (other === acc) return;
                  other.folds.forEach((f) => f.close());
                });
              });
            });
          })();
        </script>
      {% endadd %}
    {% endblock %} 
    Grüsse
    Bernhard


  4. #4
    Alter Contao-Hase
    Registriert seit
    12.10.2010.
    Beiträge
    1.145

    Standard

    @derRenner

    vielen Dank, Dein php-Code funktioniert...

  5. #5
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.948
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Schnippel Beitrag anzeigen
    @derRenner

    vielen Dank, Dein php-Code funktioniert...
    Des wäre JavaScript und Twig, nicht PHP

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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