Ergebnis 1 bis 6 von 6

Thema: moo_accordion Anker einbauen und per ID öffnen

  1. #1
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard moo_accordion Anker einbauen und per ID öffnen

    Hallo zusammen,

    ich möchte mit einem Link eine bestimmte Seite auf meiner Website öffnen und darin zu einem bestimmten Accordion-Element scrollen und dieses öffnen lassen. Dazu müsste ich das Element irgendwie per ID ansprechen und bspw. per "?id=0" am Ende der URL öffnen können.

    Es gibt schon ein paar Threads zum Thema, leider funktionieren die darin gefundenen Lösungen bei mir nicht oder ich verstehe nicht richtig, was da passiert/passieren soll um es dann anzupassen. Deshalb hier nochmal die Frage, denn die Beiträge sind schon älter.

    https://community.contao.org/de/show...n-und-%F6ffnen
    https://community.contao.org/de/show...ion-mit-Ankern
    https://community.contao.org/de/show...dion-mit-Anker

    Code:
    <script type="text/javascript">
    <!--//--><![CDATA[//><!--
    window.addEvent('domready', function() {
      new Accordion($$('div.toggler'), $$('div.accordion'), {
        opacity: true,
        onActive: function(toggler, accordion)
          {
             toggler.addClass('active');
          },
    
          onBackground: function(toggler, accordion)
          {
             toggler.removeClass('active');
          },
        display: <?php 
        $aid=$_GET[id];
        if  ($aid == '') {
        echo "0";
        }
        else {
        echo $aid;
        }
        ?>
      });
    });
    //--><!]]>
    </script>
    Code:
    <script type="text/javascript">
    <!--//--><![CDATA[//><!--
    window.addEvent('domready', function() {
      new Fx.Accordion($$('div.toggler'), $$('div.accordion'), {
        opacity: false,
        onActive: function(tog, accordion)
          {
             tog.addClass('active');
          },
    
          onBackground: function(tog, accordion)
          {
             tog.removeClass('active');
          },
        display: <?php 
        $aid=$this->Input->get('id');
        if  ($aid == '') {
        echo "0";
        }
        else {
        echo $aid;
        }
        ?>
      });
    });
    //--><!]]>
    </script>

    Danke und Gruß

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.523
    User beschenken
    Wunschliste

    Standard

    Vielleicht verstehst du ja meine Anleitung :-)

    Prinzip ist: mit der "display: Zahl" Angabe im Akkordeon Script selbst, steuert man was offen bzw. ob alles geschlossen werden soll.
    Nun holt man sich also per GET Paramater die Zahl und fügt es dort ein.
    Auf meiner Seite ist ein Beispiel für Contao 2.11 und 3.0, geht aber auch in allen anderen Versionen. Wie man das selber macht ist dort beschrieben.
    Link: akkordeon-modul-element-direkt-oeffnen-lassen
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard

    Hallo, danke für die wirklich schnelle Antwort.

    Ich war eben bei meiner Suche sogar kurz auf Deiner Seite, aber hab wohl die Anleitung irgendwie übersehen.

    Was soll ich sagen...alles was Du beschreibst, ist bei mir vorhanden, aber "?aid=xyz" hat keine Wirkung.

    Ich habe ein Template namens moo_accordion_directly.html5, welches auch im Seitenlayout eingebunden ist. Der Inhalt stimmt mit dem Code aus Deiner Anleitung überein. Unterschiede sind nur "new Fx.Accordion" statt "new Accordion" und die Zeile "display: -1, // -1, alle Akkordions sind am Anfang eingeklappt".

    Blöde Frage nebenbei: Beginnt die Zählung eigentlich bei jeder Unterseite erneut bei Null oder zählt man quasi alle Elemente der ganzen Website durch?

    Edit:

    Zweite blöde Frage, ist in Deiner Anleitung der Code für Contao 2.11 und Contao 3.0 nicht exakt gleich?
    Geändert von hermes2.11 (14.04.2014 um 11:39 Uhr)

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.523
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von hermes2.11 Beitrag anzeigen
    und die Zeile "display: -1, // -1, alle Akkordions sind am Anfang eingeklappt".
    Äh diese darf es aber nicht mehr geben, denn dort sollte ja stehen:
    Code:
    display: <?php echo $aid; ?>,
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.523
    User beschenken
    Wunschliste

    Standard

    Die Zählung beginnt bei 0 auf jeder Seite. Komplexer wird es bei mehrere Akkoredeons auf einer Seite, da weiß ich das grad nicht genau wie sich das da verhällt.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard

    Oh man, natürlich!

    Das "display: <?php echo $aid; ?>" wurde zwei Zeilen tiefer durch "display: -1" überschrieben...

    Jetzt funktioniert alles wie es soll

    Habe aber $aid default auf -1 gesetzt, damit trotzdem noch alle Elemente geschlossen sind:

    Code:
    <?php
    $aid = '-1'; // default all closed
    //$aid = '0'; // default first open
    if ( is_numeric($this->Input->get('aid')) )
    {
      $aid=(int)$this->Input->get('aid');
    }
    ?>
    <script>
    (function($) {
      window.addEvent('domready', function() {
        new Fx.Accordion($$('div.toggler'), $$('div.accordion'), {
          display: <?php echo $aid; ?>,
    (...)
    Danke für die schnelle unkomplizierte Hilfe!

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
  •