Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 40 von 61

Thema: Accordion direkt anspringen und aufklappen (j_accordion)

  1. #1
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    HTML Accordion direkt anspringen und aufklappen (j_accordion)

    Hallo zusammen,

    falls mal jemand auch versucht Accordion direkt anzuspringen und aufzuklappen, hier meine Lösung:

    1. Link erstellen "seite.html#ui-accordion-1-header-1" für das zweite Accordion header einfach hochzählen, beginnt bei NULL oder falls man mehrere Accordion auf einer Seite hat auch hier hochzahlen. Das ist die ID des Header-DIV

    2. eine Kopie des Templates j_accordion anlegen und wie folgt erweitern (ganz unten, oben steht die ID noch nicht zur Verfügung)

    HTML-Code:
          ....
          }).keypress(function(event) {
            if (event.keyCode == 13) activate($(this));
          });
          
          // direkt anspringen über Anker(ID)
          $('div.toggler').each(function(el, index){
            if (window.location.href.split('#')[1] == $(index).attr('id') && el > 0)
            {
               index.click(); 
            }
          });      
        });
      })(jQuery);
    </script>
    Das wars schon.

    Bitte Cache beachten.

    Gruß Kisrten
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  2. #2
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Hallo,
    habe dies gerade durch Zufall gelesen und ausprobiert - leider ohne Erfolg.

    Folgendes steht im Accordion template:
    Code:
    <script>
      (function($) {
        $(document).ready(function() {
          $(document).accordion({
            // Put custom options here
            heightStyle: 'content',
            header: 'div.toggler',
    		autoHeight: false,
    		active: false,        
            collapsible: true
          });
    usw...
    Wenn ich den Code wie oben beschrieben zusäztlich erweitere passiert nicht viel -

    Wie muß der Ankler-Link denn aussehen ( habe xyz.html#ui-accordion-1-header-1 ) probiert,
    dann wird aber nur zum jeweiligen Toggler gesprungen - aber leider nicht aufgeklappt ...

    Contao 3.1.4

    Frank
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  3. #3
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Sorry,
    es funktioniert wenn man die Links mit den Ankern auf anderen Seiten setzt.

    Dennoch:

    4 Accordion Einträge auf einer Seite. Mit z.B.

    xyz.html#ui-accordion-1-header-1 - öffnet sich das 2. Accordion, mit
    xyz.html#ui-accordion-1-header-2 - öffnet sich das 3. Accordion

    Wie öffne ich aber den 1. Accordion Eintrag - xyz.html#ui-accordion-1-header-0 funktioniert nicht.
    ( Initial wurden alle Accordions geschlossen )

    Lösung:
    Code:
    $('div.toggler').each(function(el, index){
            if (window.location.href.split('#')[1] == $(index).attr('id') )
            { index.click(); }
          });
    Wenn alle Accordion Einträge initial geschlossen sind, kann man hierüber dann auch wieder den ersten Eintrag öffnen.


    Aber wie kann ich ein Accordion über einen Link auf der gleichen Seite öffnen?

    Für Anstöße dankbar
    Frank
    Geändert von Franko (25.10.2013 um 14:25 Uhr)
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  4. #4
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    Vielen Dank für die hier gebotenen Lösungen! Ich habe Leo.Unglaubs Eintrag im Wiki entsprechend ergänzt.

    Leider hat Frankos Lösung noch einen kleinen Schönheitsfehler, denn damit wird das Accordion zwar geöffnet, aber es wird nicht, wie bei Ankerlinks üblich, am oberen Seitenrand angezeigt, d.h. es wird geöffnet, aber nicht direkt "angefahren".

    Hat dafür auch noch jemand eine Lösung?

    Viele Grüße,
    Anke

  5. #5
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Anke Beitrag anzeigen
    Leider hat Frankos Lösung noch einen kleinen Schönheitsfehler, denn damit wird das Accordion zwar geöffnet, aber es wird nicht, wie bei Ankerlinks üblich, am oberen Seitenrand angezeigt, d.h. es wird geöffnet, aber nicht direkt "angefahren".

    Hat dafür auch noch jemand eine Lösung?
    Basiert auf der mootols-Version des Accordions:

    Code:
    window.addEvent('domready', function() {
       new Fx.Accordion($$('div.toggler'), $$('div.accordion'), {
            opacity: false,
            display: -1,
            alwaysHide: true,
            onActive: function(tog, el) {
                  ...
                  ...
                  scrollToTop.delay(600,tog);
                  return false;
            },
            ....
            ....
      }
    });
    
    var scrollToTop = function() { 
           var myFx = new Fx.Scroll(window).toElement(this.getParent().id,'y');
    };

    Mit dem j_accordion funktioniert es folgendermaßen:
    Code:
    (function($) {
       $(document).ready(function() {
          $(document).accordion({
               ...
               ...
          });
          var activate = function(tog) {
               ...
               ...
              scrollToTop(tog);
          };
       });
       var scrollToTop = function(tog) {
           $('html, body').animate({scrollTop: $(tog).offset().top}, 200);
       };
    })(jQuery);

    VG,
    Darko
    Geändert von w3scout (10.02.2014 um 22:03 Uhr)

  6. #6
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    Wow, beeindruckend! Herzlichen Dank, Darko!

    Gruß,
    Anke

  7. #7
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Anke Beitrag anzeigen
    Wow, beeindruckend! Herzlichen Dank, Darko!

    Gruß,
    Anke
    Kein Problem, gerne!

    Musst mal schauen, ich glaub, da war noch ein Verschachtelungsfehler in der Version für´s j_accordion. Hab´s eben berichtigt.

    Aber wenn Du kannst, setz eh lieber auf die MooTools-Version. Die läuft geschmeidiger. ;-)

    VG

  8. #8
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    Zitat Zitat von w3scout Beitrag anzeigen
    Kein Problem, gerne!

    Musst mal schauen, ich glaub, da war noch ein Verschachtelungsfehler in der Version für´s j_accordion. Hab´s eben berichtigt.

    Aber wenn Du kannst, setz eh lieber auf die MooTools-Version. Die läuft geschmeidiger. ;-)

    VG
    Tja, weißt du ... Vielen Dank für den Hinweis, aber als programmiertechnisch ziemlich Untalentierte erscheint mir jQuery ein wenig durchschaubarer, daher will ich erstmal dabei bleiben ...

    Ich habe mit deiner ersten Version keine Fehlermeldung bekommen, aber falls du den ganzen Code im Wiki noch mal checken magst - dort sollte für andere es schon korrekt sein.

    LG
    Anke

  9. #9
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    Diese Lösung mit dem Anspringen und Aufklappen ist doch nicht so ideal. Das funktioniert in dem Moment, wo man ein Anker-Akordion anspringt.

    Wenn man sich aber ganz normal auf einer Seite mit Akkordeons bewegt, dann wird die Seite bei jedem Öffnen und Schließen eines Bereichs hoch oder runter gescrollt.

    Muss man dazu was an der Reihenfolge der Anweisungen ändern?

    Code:
    <script src="<?php echo TL_ASSETS_URL; ?>assets/jquery/ui/<?php echo JQUERY_UI; ?>/jquery-ui.min.js"></script>
    <script>
      (function($) {
        $(document).ready(function() {     
          $(document).accordion({
            // Put custom options here
            heightStyle: 'content',
            header: 'div.toggler',
            collapsible: true,
            active: false
          });
          var activate = function(tog) {
            var tgs = $('div.toggler');
            tgs.removeClass('active');
            tog.addClass('active');
            tgs.next('div.accordion').attr('aria-hidden', 'true');
            tog.next('div.accordion').attr('aria-hidden', 'false');
    	scrollToTop(tog);
          };
          $('div.toggler').focus(function(e) {
            $('div.toggler').attr('tabindex', 0);
            $(this).attr('tabindex', -1);
          }).blur(function() {
            $(this).attr('tabindex', 0);
          }).click(function() {
            activate($(this));
          }).keypress(function(event) {
            if (event.keyCode == 13) activate($(this));
          });
    	var scrollToTop = function(tog) {
            $('html, body').animate({scrollTop: $(tog).offset().top}, 200);
          };
     
          // direkt anspringen über Anker(ID)
          $('div.toggler').each(function(el, index){
            if (window.location.href.split('#')[1] == $(index).attr('id') )
            { index.click(); }
          });      
        });
      })(jQuery);
    </script>
    Viele Grüße,
    Anke
    Geändert von Anke (12.02.2014 um 10:47 Uhr)

  10. #10
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Anke Beitrag anzeigen
    Diese Lösung mit dem Anspringen und Aufklappen ist doch nicht so ideal. Das funktioniert in dem Moment, wo man ein Anker-Akordion anspringt.
    Wenn man sich aber ganz normal auf einer Seite mit Akkordeons bewegt, dann wird die Seite bei jedem Öffnen und Schließen eines Bereichs hoch oder runter gescrollt.
    Also Leute, die früher auch schon auf animierte GIF´s standen, finden sowas toll! Da bewegt sich endlich mal was!

    Nein, im Ernst: so aus dem Stehgreif wüsste ich da jetzt keine schnelle Lösung außer z.B. den Einsatz von Cookies in Kombination mit einer individuellen CSS-Klasse pro Accordion und der entsprechenden Erweiterung des Accordion-Codes.

    VG

  11. #11
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard Accordion offen lassen bis es erneut angeklickt wird

    Okay, dann habe ich noch eine andere Frage. Mein Template sieht so aus:

    Code:
    <script src="<?php echo TL_ASSETS_URL; ?>assets/jquery/ui/<?php echo JQUERY_UI; ?>/jquery-ui.min.js"></script>
    <script>
      (function($) {
        $(document).ready(function() {
          $(document).accordion({
            // Put custom options here
            heightStyle: 'content',
            header: 'div.toggler',
            collapsible: true,
            active: false
          });
          var activate = function(tog) {
            var tgs = $('div.toggler');
            tgs.removeClass('active');
            tog.addClass('active');
            tgs.next('div.accordion').attr('aria-hidden', 'true');
            tog.next('div.accordion').attr('aria-hidden', 'false');
          };
          $('div.toggler').focus(function() {
            $('div.toggler').attr('tabindex', 0);
            $(this).attr('tabindex', -1);
          }).blur(function() {
            $(this).attr('tabindex', 0);
          }).click(function() {
            activate($(this));
          }).keypress(function(event) {
            if (event.keyCode == 13) activate($(this));
          });
          // direkt anspringen über Anker(ID)
          $('div.toggler').each(function(el, index){
            if (window.location.href.split('#')[1] == $(index).attr('id') )
            { index.click(); }
          }); 
        });
      })(jQuery);
    </script>
    Da die Accordions oft höher sind als der Viewport, passiert es (wenn man den nächsten Bereich öffnet und der vorherige Bereich sich schleßt, während die Seitenposition beim Click-Event aber beibehalten wird), dass man sich am Ende des gerade geöffneten Accordions befindet und immer hoch scrollen muss.

    Um das zu verhindern, möchte ich, dass die Accordions offen bleiben wie z.B. auf der mobilen Wikipedia-Seite. Dass ein Accordion sich erst wieder schließt, wenn sein Toggler erneut angeklickt wird.

    Das geht z.B. hiermit - ohne das CE Accordion:
    Code:
    $('.toggler').on('click', function() {
       $(this).next('.content').slideToggle();
    });
    Wie kann ich das ins Accordion-Template einbauen, um das inhaltselement bequem mit den Wrappern nutzen zu können (und ohne z.B. die anderen Features wie die Ergänzung zur Barrierefreiheit zunichte zu machen)? Ich habe verschiedenes ausprobiert, aber dann geht ein Accordion beim Klicken zunächst immer auf und zu und erst beim zweiten Klicken auf. Kann mir jemand dabei helfen?

    Viele Grüße,
    Anke

  12. #12
    Contao-Nutzer
    Registriert seit
    27.03.2014.
    Beiträge
    12

    Standard Die Frage ist noch aktuell ;-)

    Hallo,

    ich würde gerne noch mal eine Frage auffrischen weil sie mich derzeit direkt betrifft:

    Zitat Zitat von Franko Beitrag anzeigen
    Aber wie kann ich ein Accordion über einen Link auf der gleichen Seite öffnen?
    Ich habe ein Akkordeon (jQuery) mit 3 Togglern auf meiner "Kontakt"-Seite integriert: Kontaktdaten, Kontaktformular, Anfahrt

    Wie kann ich nun dafür sorgen, dass wenn man im 1. geöffneten Toggler ("Kontaktdaten") auf eine E-Mail-Adresse klickt... dass man dann direkt auf den 2. Toggler ("Kontaktformular") geleitet wird?
    Die Lösung mit dem "seite.html#ui-accordion-1-header-1" funktioniert zum Hin- und Herspringen von Toggler zu Toggler auf einer Seite leider nicht. Oder nur bei mir nicht??

    Gibt es jemanden der Franko und mir weiterhelfen kann (auch wenn dessen Beitrag schon mehr also ein halbes Jahr zurückliegt)?

    Viele Grüße
    Peter

  13. #13
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    Hallo Peter,

    das müsste eigentlich mit dem independent_accordion gut realisierbar sein - habe das allerdings selbst noch nicht probiert.

    Gruß,
    Anke

  14. #14
    Contao-Nutzer
    Registriert seit
    27.03.2014.
    Beiträge
    12

    Standard

    Zitat Zitat von Anke Beitrag anzeigen
    Hallo Peter,

    das müsste eigentlich mit dem independent_accordion gut realisierbar sein - habe das allerdings selbst noch nicht probiert.

    Gruß,
    Anke
    Hallo Anke,
    danke für diese wirklich schnelle Antwort ;-).
    Leider kann ich diesen Independent Accordion-Toggler nicht mit "seite.html#indacc_toggler" ansprechen bzw. öffnen.
    Es funktioniert also (zum gegenwärtigen Zeitpunkt) nicht, dass man durch Klicken auf einen Link im 1. Toggler den 2. Toggler öffnet (das Kontaktformular - mit independent accordion).
    Muss da wieder etwas im Template geändert werden?

    Danke und Grüße,
    Peter

  15. #15
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    So funktioniert es bei mir:

    Der Link in Akkordion 1 zeigt auf dieselbe Seite und auf den Anker #akk2.
    In Akkordeon 2 habe ich im Toggler den Anker <a name="akk2">Akk 2</a> definiert (das wurde ohne Murren akzeptiert). Außerdem habe ich dem Feld "Klassennnamen" die Klassen "indacc_toggler akk2" notiert, wobei indacc_toggler die Standardklasse des independent_accordions ist und über akk2 kann dieser Toggler per jQuery gezielt angesprochen werden.

    Der HTML-Code sieht nach dem Laden der Seite so aus:
    HTML-Code:
    <section class="ce_IndependentAccordionStart ce_independent_accordion block">
    	<div class="indacc_toggler">Akk 1</div>
    	<div class="indacc_content" style="display:none;">
    		<div class="ce_text block">
    			<h1>Überschrift</h1>
    			<p>Text ...</p>
    			<p><a class="link_to_open_akk2" href="index.php/menu-1.html#akk2">Dieser Link soll Akkordeon 2 öffnen</a></p>
    		</div>
    	</div>
    </section>
    <section class="ce_IndependentAccordionStart ce_independent_accordion block">
    	<div class="indacc_toggler akk2"><a name="akk2">Akk 2</a></div>
    	<div class="indacc_content" style="display:none;">
    		<div class="ce_text block">
    			<h1>Überschrift</h1>
    			<p>Hier ist das Kontaktformular.</p>
    		</div>
    	</div>
    </section>
    jQuery verwendet nicht add/removeClass (das macht ja das Modul schon, sondern muss Mausklicks (trigger) ausführen, damit das Modul die Klassen entsprechend ändert:
    Code:
    <script type="text/javascript">
    jQuery(document).ready(function(){
    	jQuery("a.link_to_open_akk2").click(function() {
    		jQuery('div.indacc_toggler_active').trigger('click');
    		jQuery('.akk2').trigger('click');
    	});
    });
    </script>
    Gruß,
    Anke

  16. #16
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    Hallo Peter,

    Marko war so lieb und hat independent_accordions geändert, so dass die Akkordeons in der CSS-Klasse durchnummeriert werden. Damit kannst du sie jetzt leichter einzeln ansprechen, z.B. mit jQuery.

    Viele Grüße,
    Anke

  17. #17
    Contao-Nutzer
    Registriert seit
    10.10.2009.
    Beiträge
    24

    Standard JavaScript Code ausführen beim Öffnen des Accordions

    Hallo zusammen,

    ich sitze gerade ordentlich auf der Leitung und hoffe jemand von euch kann mir weiterhelfen. Ich verwende die Erweiterung independent_accordion und möchte JavaScript Code ausführen, wenn ein Accordion geöffnet wird - welches ist dabei egal.

    Hintergrund ist folgender: Ich verwende Unveil.js (lazy load) mit JQuery 1.11 um Fotos in den verschiedenen Accordions zu laden, wenn es tatsächlich geöffnet wird, da es sich um mehrere tausend Thumbnails handelt. Es funktioniert auch alles soweit einwandfrei, außer dass wenn ich ein Accordion aufmachen die Thumbnails nicht sofort geladen werden, sondern erst wenn ich scrolle und das Script daraufhin überprüft ob die Thumbnails im sichtbaren Bereich sind.

    Aktuell verwende ich folgenden Code im Head Bereich um die Thumbnails dynamisch nachzuladen:
    Code:
    <script>
        $(function() {
            $("img").unveil();
        });
    </script>
    Genau diesen Code will ich auch ausführen, wenn ein Accordion geöffnet wird, damit man danach nicht scrollen muss um die Thumbnails zu laden.

    Vielen Dank für eure Hilfe!
    ITinfrastruktur

  18. #18
    Contao-Nutzer Avatar von djo
    Registriert seit
    30.01.2011.
    Ort
    Waldshut-Tiengen
    Beiträge
    210

    Standard

    Hallo zusammen,

    Nachtrag: Unten Genanntes hat sich erledigt. Habe es bereits an anderer Stelle bereitgestellt.

    // ich hätte da noch was Interessantes vor und bräuchte etwas Hilfe.

    Und zwar habe ich ein Akkordeon, dass an 7 Wochentagen ein anderes Tab öffnen soll.
    Ich habe da was vorbereitet, weiß aber nicht, wie ich die entsprechenden Akkordeon-Tabs per "Tagesnummer" anspreche. Dies soll nach dem Laden passieren.
    Den einzelnen Akkorden-Tabs habe ich die Klassennamen in Form von Wochentagen gegeben. Jetzt fehlt nur noch der Click-Befehl auf die Klasse.

    Code:
         $( window ).load(function() {
    var tage = ['sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag', 'sonntag'];
        var aktuellertag = (typeof(i) == 'object') ? i.getDay() : i ;
        return tage[aktuellertag];
      $('div.'+aktuellertag).click();
      	
      });
    Würde mich über einen Rat freuen. //
    Geändert von djo (06.10.2014 um 08:17 Uhr)

  19. #19
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard Anspringen und Aufklappen - nur wenn MooTools ausgeschaltet sind

    Dank dieses threads bzw. der Anleitung aus dem Wiki klappt es auch bei mir gut, aber nur solange im Layout nicht auch MooTools eingebunden sind. Das wundert mich, denn das Template ist doch schon für "noConflict" Modus vorbereitet, warum geht es trotzdem nicht?
    Ich habe einiges probiert,
    Code:
    <script>$.noConflict();</script>
    zusätzlich im head, bringt auch nichts.
    Die Akkordeons funktionieren, nur das Anspringen per Link nicht wenn MooTools mit im Spiel sind.
    Wie kann man das hinbekommen?

    LG
    Bennie
    Geändert von Bennie (19.11.2014 um 19:37 Uhr)

  20. #20
    Contao-Fan
    Registriert seit
    03.04.2012.
    Beiträge
    747

    Standard

    hallo zusammen,

    ich hänge meinen Beitrag mal hien an. Ich nutze auch ein accordion auf der Basis von j_accordion. Funktioniert soweit auch prima. Kann mir jemand einen kleinen Tipp geben, wie man das accordion in soweit ändert, damit der User die einzelnen Accordion-Felder öffnen kann, so dass sich kein anderes schließt.
    Das Template das ich aktuelle verwende:
    PHP-Code:
    <script src="<?php echo TL_ASSETS_URL?>assets/jquery/ui/<?php echo $GLOBALS['TL_ASSETS']['JQUERY_UI']; ?>/jquery-ui.min.js"></script>
    <script>
      (function($) {
        $(document).ready(function() {
          $(document).accordion({
            // Put custom options here
            heightStyle: 'content',
            header: 'div.toggler',
            autoHeight: false,
            collapsible: true,
            active: false,
            create: function(event, ui) {
              ui.header.addClass('active');
            },
            activate: function(event, ui) {
              ui.newHeader.addClass('active');
              ui.oldHeader.removeClass('active');
            }
          });
        });
      })(jQuery);
    </script>
    Seien wir realistisch, versuchen wir das Unmögliche

  21. #21
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    Beim independent_accordion lassen sich alle Bereiche einzeln öffnen und schließen. (Funktioniert auch unter Contao 3.4.5)

    Gruß,
    Anke

  22. #22
    Contao-Fan
    Registriert seit
    03.04.2012.
    Beiträge
    747

    Standard

    Zitat Zitat von Anke Beitrag anzeigen
    Beim independent_accordion lassen sich alle Bereiche einzeln öffnen und schließen. (Funktioniert auch unter Contao 3.4.5)

    Gruß,
    Anke
    Funktioniert das independent accordion auch unter contao 3.4.5?
    Seien wir realistisch, versuchen wir das Unmögliche

  23. #23
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    919

    Standard

    Zitat Zitat von monaco Beitrag anzeigen
    Funktioniert das independent accordion auch unter contao 3.4.5?
    Lies noch mal, was ich geschrieben habe :-)

  24. #24
    Contao-Fan
    Registriert seit
    03.04.2012.
    Beiträge
    747

    Standard

    Zitat Zitat von Anke Beitrag anzeigen
    Lies noch mal, was ich geschrieben habe :-)
    Ooh sorry. War dann doch schon im Halbschlaf
    Seien wir realistisch, versuchen wir das Unmögliche

  25. #25
    Contao-Fan
    Registriert seit
    03.04.2012.
    Beiträge
    747

    Standard

    Zitat Zitat von Anke Beitrag anzeigen
    Beim independent_accordion lassen sich alle Bereiche einzeln öffnen und schließen. (Funktioniert auch unter Contao 3.4.5)

    Gruß,
    Anke
    Hab das independet_accordion installiert und funktioniert. Danke für den tollen Tipp. Ich möchte an dieser Stelle noch, dass dass accordion zu Beginn beim Seitenaufruf geschlossen ist.
    Ich dachte das sich das mit
    PHP-Code:
    <script src="<?php echo TL_ASSETS_URL?>assets/jquery/ui/<?php echo $GLOBALS['TL_ASSETS']['JQUERY_UI']; ?>/jquery-ui.min.js"></script>
    <script>
      (function($) {
        $(document).ready(function() {
          $(document).accordion({
            // Put custom options here
            heightStyle: 'content',
            header: 'div.toggler',
            collapsible: true,
            active: false,
            create: function(event, ui) {
              ui.header.addClass('active');
            },
            activate: function(event, ui) {
              ui.newHeader.addClass('active');
              ui.oldHeader.removeClass('active');
            }
          });
        });
      })(jQuery);
    </script>
    realisieren lässt. Leider sind die accordions geöffnet. Mit active: false; sollten doch die accordions geschlossen werden, oder?
    Seien wir realistisch, versuchen wir das Unmögliche

  26. #26
    Contao-Fan
    Registriert seit
    03.04.2012.
    Beiträge
    747

    Standard

    hat sich erledigt; Es gibt ja die Option "Anfangs geschlossen"
    Geändert von monaco (27.04.2015 um 07:21 Uhr)
    Seien wir realistisch, versuchen wir das Unmögliche

  27. #27
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    In Contao 3.2.20 wurde ja das j_accordeon.html5 template geändert so wie es in post#20 zu sehen ist.
    Das direkte Anspringen funktioniert bei mir anscheinend nicht wie im Wiki beschrieben.
    Geht das so nicht mehr?

    Grüße
    Bennie
    Geändert von Bennie (20.05.2015 um 09:05 Uhr)

  28. #28
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    Das "Anspringen" will nicht .... hat das jemand mit dem aktuellen Template umgesetzt?

  29. #29
    Contao-Nutzer
    Registriert seit
    31.03.2011.
    Beiträge
    86

    Standard Anspringen und Öffnen klappt mit 3.5.0 nicht

    Hallo zusammen,

    ich verwende schon seit längerem das obige angepasst j_accordion Script und öffne ein bestimmtes Accordion.
    Mit der Version 3.4.5 klappt es, mit der Version 3.5.0 klappt das Script nicht mehr.
    Hat jemand das gleiche Verhalten feststellen können?

    Beste Grüße
    Bojay

  30. #30
    Contao-Nutzer
    Registriert seit
    31.03.2011.
    Beiträge
    86

    Standard Gelöst

    Zitat Zitat von Bojay Beitrag anzeigen
    Hallo zusammen,

    ich verwende schon seit längerem das obige angepasst j_accordion Script und öffne ein bestimmtes Accordion.
    Mit der Version 3.4.5 klappt es, mit der Version 3.5.0 klappt das Script nicht mehr.
    Hat jemand das gleiche Verhalten feststellen können?

    Beste Grüße
    Bojay
    Mit der Version 3.5.0 wird das id-Attribut des Toggler-Divs anders zusammengesetzt.

  31. #31
    Contao-Nutzer
    Registriert seit
    04.12.2013.
    Ort
    Reutlingen
    Beiträge
    221

    Standard

    Hallo Zusammen,

    da ich nun auch lange an einer Lösung gefeilt habe, poste ich mal mein Ergebnis.
    Schonmal vorab, meine Script-Kenntnisse sind noch nicht sehr ausgereift. Ebenso läuft das bisher nur auf einem Kundenprojekt, weshalb ich euch kein Demo-link schicken kann.

    PHP-Code:
    <script src="<?= TL_ASSETS_URL ?>assets/jquery/ui/<?= $GLOBALS['TL_ASSETS']['JQUERY_UI'?>/jquery-ui.min.js"></script>
    <script>
      (function($) {
        $(document).ready(function() {
          $(document).accordion({
            // Put custom options here
            heightStyle: 'content',
            header: 'div.toggler',
            collapsible: true,
            create: function(event, ui) {
              ui.header.addClass('active');
            },
            activate: function(event, ui) {
              ui.newHeader.addClass('active');
              ui.oldHeader.removeClass('active');
            }
          }).keypress(function(event) {
            if (event.keyCode == 13) activate($(this));
          });
          
          // direkt anspringen über Anker(ID)
          $('div.toggler').each(function(el, index){
            if (window.location.href.split('#')[1] == $(index).attr('id') && el > 0)
            {
               index.click();
              }
          });
            
            $('.mod_navigation > .level_1 > .submenu > .level_2 > li > a').click(function() {
                var navId = $(this).attr('href').split('#')[1];
                $('div.toggler').each(function(index) {
                    var attribut = $(this).attr('id');
                    $(this).removeClass('ui-accordion-header-active ui-state-active ui-corner-top active');
                    $(this).next('.accordion').removeClass('ui-accordion-content-active');
                    $(this).next('.accordion').css('display', 'none');
                    $(this).attr('aria-selected', 'false');
                    $(this).attr('aria-expanded', 'false');
                    $(this).attr('tabindex', '-1');
                    $(this).next('.accordion').attr('aria-hidden', 'true');
                    if ( navId == attribut ) {
                        $(this).addClass('ui-accordion-header-active ui-state-active ui-corner-top active');
                        $(this).next('.accordion').addClass('ui-accordion-content-active');
                        $(this).next('.accordion').css('display', 'block');
                        $(this).attr('aria-selected', 'true');
                        $(this).attr('aria-expanded', 'true');
                        $(this).attr('tabindex', '0');
                        $(this).next('.accordion').attr('aria-hidden', 'false');
                        $(document).accordion('option', 'active', index );
                    }
                });
            });
            $('.mod_sitemap > .level_1 > .submenu > .level_2 > li > a').click(function() {
                var navId = $(this).attr('href').split('#')[1];
                $('div.toggler').each(function(index) {
                    var attribut = $(this).attr('id');
                    $(this).removeClass('ui-accordion-header-active ui-state-active ui-corner-top active');
                    $(this).next('.accordion').removeClass('ui-accordion-content-active');
                    $(this).next('.accordion').css('display', 'none');
                    $(this).attr('aria-selected', 'false');
                    $(this).attr('aria-expanded', 'false');
                    $(this).attr('tabindex', '-1');
                    $(this).next('.accordion').attr('aria-hidden', 'true');
                    if ( navId == attribut ) {
                        $(this).addClass('ui-accordion-header-active ui-state-active ui-corner-top active');
                        $(this).next('.accordion').addClass('ui-accordion-content-active');
                        $(this).next('.accordion').css('display', 'block');
                        $(this).attr('aria-selected', 'true');
                        $(this).attr('aria-expanded', 'true');
                        $(this).attr('tabindex', '0');
                        $(this).next('.accordion').attr('aria-hidden', 'false');
                        $(document).accordion('option', 'active', index );
                    }
                });
            });
        });
      })(jQuery);
    </script>
    Zur Funktion:
    Das Akkordeon liegt auf einer Seite auf Navigationsebene 1. Kann aber über Unterpunkte (Ebene. 2) direkt auf ein Akkordeon-Element springen. Wenn man nun auf dieser Seite schon ist, haben die oben genannten Lösungen mich zwar zu dem Anker gebracht, leider ohne dass das angesprungene Akkordeon aufgegangen ist. Mit meinem Ansatz ist das nun möglich, da ich auch eine Sitemap habe ist fast alles doppelt. Kann man das irgendwie vereinfachen? Getestet habe ich das aufm Mac mit der jeweils neuesten Version von: Chrome, FF, Safari
    Anpassungen am Akkordeon Template mussten auch gemacht werden.

    Das ganze könnte auch noch etwas kleiner werden:
    PHP-Code:
            $('.mod_navigation > .level_1 > .submenu > .level_2 > li > a').click(function() {
                var 
    navId = $(this).attr('href').split('#')[1];
                $(
    'div.toggler').each(function(index) {
                    var 
    attribut = $(this).attr('id');
                    if ( 
    navId == attribut ) {
                        $(
    document).accordion('option''active'index );
                    }
                });
            }); 
    hier macht aber leider der Safari nicht mit.

    Gerne nehme ich Verbesserungsvorschläge entgegen.

    Viele Grüße
    Flox

  32. #32
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Zitat Zitat von Anke Beitrag anzeigen
    So funktioniert es bei mir:

    ...

    Der HTML-Code sieht nach dem Laden der Seite so aus:
    HTML-Code:
    <section class="ce_IndependentAccordionStart ce_independent_accordion block">
    	<div class="indacc_toggler">Akk 1</div>
    	<div class="indacc_content" style="display:none;">
    		<div class="ce_text block">
    			<h1>Überschrift</h1>
    			<p>Text ...</p>
    			<p><a class="link_to_open_akk2" href="index.php/menu-1.html#akk2">Dieser Link soll Akkordeon 2 öffnen</a></p>
    		</div>
    	</div>
    </section>
    <section class="ce_IndependentAccordionStart ce_independent_accordion block">
    	<div class="indacc_toggler akk2"><a name="akk2">Akk 2</a></div>
    	<div class="indacc_content" style="display:none;">
    		<div class="ce_text block">
    			<h1>Überschrift</h1>
    			<p>Hier ist das Kontaktformular.</p>
    		</div>
    	</div>
    </section>
    jQuery verwendet nicht add/removeClass (das macht ja das Modul schon, sondern muss Mausklicks (trigger) ausführen, damit das Modul die Klassen entsprechend ändert:
    Code:
    <script type="text/javascript">
    jQuery(document).ready(function(){
    	jQuery("a.link_to_open_akk2").click(function() {
    		jQuery('div.indacc_toggler_active').trigger('click');
    		jQuery('.akk2').trigger('click');
    	});
    });
    </script>
    Hi Leute,

    ich komme da leider nicht vorwärts. Das Anspringen auf der gleichen Seite funktioniert ja bekanntlich nicht mit dem Template aus dem Wiki –*deshalb habe ich Independent Acc installiert und versucht alles analog anzupassen. Leider öffnet es sich nicht beim Anklicken des links. Es passiert nichts. Klar wenn das Accordion offen ist springt der Link zur Sprungmarke. Aber im geschlossenen Zustand tut sich da gar nix –*kann mir jemand unter die Arme greifen? Gibt es inzwischen vielleicht eine andere Lösung?

    Habe das hier in dem Seitenlayout eingebunden:

    Code:
    jQuery(document).ready(function(){
    	jQuery("a.link_to_open_akk2").click(function() {
    		jQuery('div.indacc_toggler_active').trigger('click');
    		jQuery('.akk2').trigger('click');
    	});
    });
    In dem Accordion selbst habe ich den Anker-Tag entsprechend eingebunden.
    Der Link hat den Zusatz #akk2 und die Klasse link_to_open_akk2

    Danke schon mal.

  33. #33
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das jQuery Akkordeon (Core) kannst du hiermit gezielt aufklappen
    PHP-Code:
    (function($) {
      $(
    document).ready(function() {

        $(
    "a.acc_2").click(function() {
          $(
    document).accordion('option''active'1);
        });

      });
    })(
    jQuery); 
    1 steht für das 2., 0 würde für das 1. Akkordeon stehen.

    Wenn du mit Hashes arbeitest, dann benutze bitte nicht das NAME-Attribut als Anker. Benutze die ID des Zielelements.

    Hier mal zum Ausprobieren in der Console auf der Online-Demo http://demo.contao.org/en/accordion.html
    PHP-Code:
    (function($) {
      
    console.clear();
      $(
    '.acc-trigger').remove();

      var
        
    accordions = $('.ce_accordion'),
        
    toggler = $('.ce_accordion .toggler'),
        
    link = $('<div>'),
        
    newLink
      
    ;

      
    toggler.each(function(indexel){
        
    newLink link.clone();
        
    newLink.attr({
          class: 
    'acc-trigger',
          
    title'trigger acc ' index
        
    });
        
    newLink.text('trigger acc ' index);
        
    newLink.css({
          
    cursor'pointer'
        
    });
        
    newLink.click(function(event){
          $(
    document).accordion('option''active'index);
        });

        $(
    accordions[0]).before(newLink);
      });
    })(
    jQuery); 
    Hier mal ein Beispiel mit Hashes
    PHP-Code:
    (function($) {
      
    console.clear();
      $(
    '.acc-trigger').remove();

      var
        
    accordions = $('.ce_accordion'),
        
    toggler = $('.ce_accordion .toggler'),
        
    link = $('<a>'),
        
    request window.location.pathname.substring(1),
        
    newLinkhashid
      
    ;

      
    toggler.each(function(indexel){
        
    id = $(el).attr('id');
        
    hash '#' id;

        
    newLink link.clone();
        
    newLink.attr({
          
    hrefrequest hash,
          class: 
    'acc-trigger',
          
    title'trigger ' hash
        
    });
        
    newLink.text('trigger acc ' index);
        
    newLink.css({
          
    display'block'
        
    });
        
    newLink.click(function(event){
          
    event.preventDefault();
          $(
    document).accordion('option''active'index);
        });

        $(
    accordions[0]).before(newLink);
      });
    })(
    jQuery); 
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  34. #34
    Contao-Nutzer
    Registriert seit
    08.11.2009.
    Beiträge
    191

    Standard

    Zitat Zitat von Bojay Beitrag anzeigen
    Hallo zusammen,

    ich verwende schon seit längerem das obige angepasst j_accordion Script und öffne ein bestimmtes Accordion.
    Mit der Version 3.4.5 klappt es, mit der Version 3.5.0 klappt das Script nicht mehr.
    Hat jemand das gleiche Verhalten feststellen können?

    Beste Grüße
    Bojay
    Hallo,
    habe auch eben bemerkt dass das direkte anspringen und aufklappen unter 3.5 nicht mehr funktioniert.
    Hat jemand eine Idee woran es liegt?

    Gruß

  35. #35
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Man sollte diese Template-Vorlage sowieso nicht mehr nehmen, da sie aus einer älteren Contao-Version ist.

    Alles was du zum Aufklappen eines bestimmten Akkordeons brauchst ist
    PHP-Code:
    /* JavaScript (jQuery) */

    $(document).accordion('option''active'0); // 0 ist hier der Index des aufzuklappenden Akkordeons 
    Hast du ein Element auf der Seite, welches dieses Akkordeon bei Klick aufklappen soll, musst du einen Click-Event auf das Element aufsetzen, welches obigen Code mit dem entsprechenden Index ausführt.

    Hat deine URL einen Hash der ein Akkordeon aufklappen soll, musst du die URL analysieren, schauen, ob der Hash der ID eines Akkordeons entspricht und dann obigen Code mit dem entsprechenden Index ausführen.
    Geändert von Andreas (24.08.2016 um 22:59 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  36. #36
    Contao-Nutzer Avatar von snarosy
    Registriert seit
    27.04.2012.
    Beiträge
    144

    Standard j_accordion ab version 3.5

    Hallo,
    ich habe nach langer Suche diesen Beitrag gefunden, schaffe aber leider nicht den letzten schritt.
    Wie erweitere ich nun das j_accordion, damit ich einzelne bestimmtes Akkordeon über den Link mit einem hash-tag ( zB akkordeon.html#2 für das 3. Akkordeon ) öffnen kann.
    Danke für eure Hilfe!
    Liebe Grüße
    Stefan

  37. #37
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.742
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Im Contao Wiki ist das eigentlich sehr gut erklärt http://de.contaowiki.org/Accordions_...und_aufklappen.
    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.




  38. #38
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    @snarosy
    So kannst du mit #3 das dritte aufklappen und mit #2 das zweite usw.
    JS-Code (jQuery)
    PHP-Code:
    $(document).accordion('option''active'window.location.hash.substring(1) - 1); 
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  39. #39
    Contao-Nutzer Avatar von snarosy
    Registriert seit
    27.04.2012.
    Beiträge
    144

    Standard

    Danke für den Code, jetzt habe ich es geschafft!
    Ein kleiner Schönheitsfehler ist noch, dass die Seite bei der Änderung des Hash (zB. über einen Link auf der Seite, der auf ein anderes Akkordion-Fenster verweist), die Seite nicht neu geladen wird und somit das gewünschte Akkordion nicht aufklappt.
    Aber damit kann ich im Moment einmal leben, über einen Tipp freue ich mich natürlich.
    Danke jedenfalls für die Hilfe!

  40. #40
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    Zitat Zitat von mlweb Beitrag anzeigen
    Im Contao Wiki ist das eigentlich sehr gut erklärt http://de.contaowiki.org/Accordions_...und_aufklappen.
    Funktionierte in dem aktuellen Template bei mir nicht wie ich schon in #27 schrieb.
    Ich habe das jetzt so gelöst:
    PHP-Code:
    $('div.toggler').each(function() {
        if (
    document.location.hash === '#' + $(this).parent().attr('id') && !$(this).hasClass('active')) {
            $(
    this).click();
        }
    }); 
    wobei man dem entsprechenden Akkordeon Umschlag eine CSS ID geben muss (z.B. meineID) , und diese dann an denn Link hängt (z.B. http://meinedomain.de#meineID ) oder wenn es mit dem hash aus der Wiki Anleitung gehen soll, dann eben den Teil
    HTML-Code:
     .parent()
    wegglassen und ui-accordion-1-header-1 z.B. dranhängen.
    Ich sehe gerade, dass das wohl in Contao 3.5 auch schon wieder andere ID Namen sind , also dann eben ui-id-1 etc..
    Der Unterschied ist ja nur, dass die eigene vergebene ID an den section Tag gebunden ist während die andere Variante die voregebenen ID's der Akkordeon divs nutzt.
    Geändert von Bennie (02.03.2016 um 10:07 Uhr)

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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