Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabe der Gruppen im CE zählen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausgabe der Gruppen im CE zählen

    Hallo,

    ich habe ein CE erstellt, dessen Gruppen ich innerhalb des Elements duplizieren kann. Dabei handelt es sich um Kontakte, die noch in Bereiche unterteilt werden müssen.

    Ein Beispiel:

    Kontakt 1
    Kontakt 2
    Bereich xy
    Kontakt 3
    Kontakt 4
    Kontakt 5
    Bereich xyz

    Füge ich in die Schleife jetzt die Variable des Bereichs ein, wird mir diese natürlich an der falschen Stelle ausgeben. Deshalb möchte ich prüfen wann welche Gruppe ausgeben wird, um so den Bereich richtig auszugeben.

    Kann das funktionieren oder habe ich da einen Denkfehler?

    Gruß
    Manuel

  • #2
    Kontakt ist jeweils die Gruppe, die dupliziert wird?

    Du willst ja eigentlich nur einen Bruch einfügen innerhalb der Schleife. Nutze dafür eine Zählvariable oder den Modulus-Operant.
    Zeig mal dein Template.

    PHP-Code:
    foreach($this->group('kontakt') as $i => $fields) {
    if(
    $i == 2)
    {
    echo 
    'Bereich xy';
    }

    Zuletzt geändert von Tim; 09.03.2016, 08:24.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      So sieht es aktuell aus. Wenn ich deinen Vorschlag einbaue, weiß er ja aber nicht, wann genau er den Bereich setzen soll. Das kann ja mal nach 4 Kontakten und mal nach 9 sein.

      PHP-Code:
      <?php
      foreach($this->group('angaben_zur_person') as $i => $fields) {
          if(
      $i <= $round){
          echo 
      "<div class='contact_box'>";
          if(!empty(
      $this->field('bild#' $i)->value())){
              echo 
      "<div class='contact_image'>" $this->field('bild#' .$i)->html() . "</div>";
          }
          if(!empty(
      $this->field('vorname#' $i)->value())){
              echo 
      "<div class='contact_firstname'>" $this->field('vorname#' $i)->value() . "</div>";
          }
          if(!empty(
      $this->field('nachname#' $i)->value())){
              echo 
      "<div class='contact_lastname'>" $this->field('nachname#' $i)->value() . "</div>";
          }
          if(!empty(
      $this->field('bereich#' $i)->value())){
              echo 
      "<div class='contact_sector'>" $this->field('bereich#' $i)->value() . "</div>";
          }
          if(!empty(
      $this->field('telefon#' $i)->value())){
              echo 
      "<div class='contact_phone'>" $this->field('telefon#' $i)->value() . "</div>";
              }
          if(!empty(
      $this->field('fax#' $i)->value())){
              echo 
      "<div class='contact_fax'>" $this->field('fax#' $i)->value() . "</div>";
              }
          if(!empty(
      $this->field('e_mail#' $i)->value())){
              echo 
      "<div class='contact_email'>" $this->field('e_mail#' $i)->value() . "</div>";
              }
          echo 
      "</div>";
          }
      }
      ?>

      Kommentar


      • #4
        Dafür setzt man ausserhalb eine Zählvariable

        $counter = 0;
        foreach($this->group('angaben_zur_person') as $i => $fields) {
        ...
        $counter++;
        }

        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Ich verstehe nicht ganz wie ich dann eine Abhängigkeit schaffe. Ich will ja folgendes erreichen:

          Zitat von Manuel Beitrag anzeigen
          Ein Beispiel:

          Kontakt 1
          Kontakt 2
          Bereich xy
          Kontakt 3
          Kontakt 4
          Kontakt 5
          Bereich xyz
          Gib mir solange "angaben_zur_person" aus bis du "region_bereich" findest. Danach gib mir weiter "angaben_zur_person" aus.

          In deinem Beispiel zählt er die Durchläufe der Schleife. Die helfen mir aber ja nicht herauszufinden wann der Bereich kommen muss.

          Kommentar


          • #6
            Achso, sag doch einfach "Gruppe". Für mich setzt du hier Bereiche manuell im Template. Quasi wie man Akkordeons beginnt.

            Dann solltest du eher mit $this->groups() arbeiten. Dort kommen alle Gruppen rein. Nutze mal einen richtigen php debugger damit du die Variablen auslesen kannst, sonst wirds ein langes Raten.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Kannst du das netterweise noch ein wenig ausführen. Ich müsste theoretisch ja "nur" die die Inhalte der Gruppen chronologisch ausgeben.
              Und nicht erst eine Gruppe komplett und dann die Nächste.

              Kommentar


              • #8
                Die Gruppen werden anhand der Sortierung ausgeliefert, nicht chronologisch. Wird eine andere Sortierung benötigt, muss man im Template den Array umsortieren. Chronologisch würde mir nur anhand des timestamp hier einfallen. Der ist aber nicht wirklich aussage kräftig.
                Hast Du dir diesen Array mal ausgeben lassen via xdebug oder ähnlich. Damit du siehst was da rein kommt?

                Wie man an die Inhalte einer bestimmten Gruppe kommt, ist bereits geklärt.
                Ich denke Dein Beispiel ist nicht in einer Schleife lösbar.


                angaben_zur_person ist eine Gruppe
                region_bereich ist eine weitere Gruppe

                Diese beiden Gruppen wissen nichts voneinander. Nur Du weisst, dass es sie gibt. Die "finden" sich auch nicht gegenseitig. Du musst dir hier eine Logik zurechtlegen erst angaben_zur_person abzuarbeiten, dann deine Logik, dann region_bereich, dann wieder angeben zur person.
                --
                Ich denke hier braucht man drei for Schleifen.

                1. Schleife: angaben_zur_person durchgehen bis ein gewünschter Zustand existiert
                2. Schleife: region_bereich durchgehen
                3. Schleife: wieder angeben_zur_person durchgehen, aber Zählung nicht bei 0 starten, sondern bei dem Zähler auf Schleife 1.

                Nur so würde mir eine "wiederaufnehmende" autom. Abarbeitung einfallen.

                http://www.premium-contao-themes.com

                Kommentar


                • #9
                  Hast du mal ne Skizze wie das fertig aussehen soll und dann einen Screenshot wie es mit den Gruppen aussieht. Dann schuhster ich mal was zusammen
                  http://www.premium-contao-themes.com

                  Kommentar


                  • #10
                    Zitat von Tim Beitrag anzeigen
                    Hast du mal ne Skizze wie das fertig aussehen soll und dann einen Screenshot wie es mit den Gruppen aussieht. Dann schuhster ich mal was zusammen
                    Mach ich direkt mal fertig. Vielen Dank!

                    Kommentar


                    • #11
                      Hier das Layout und das Inhaltselement:

                      Kommentar


                      • #12
                        hui, das ist nicht leicht. Das würde ich glatt als php Hausaufgabe bezeichnen. Hier muss man schon über die IDs der Gruppen gehen, damit man eine klare Gruppenzugehörigkeit hat (der Alias würde auch gehen).

                        Wer es löst, kriegt von mir nen Like
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #13
                          Also mein like hast du in jedem Fall, wenn es klappt

                          Kommentar


                          • #14
                            Zitat von Manuel Beitrag anzeigen
                            Also mein like hast du in jedem Fall, wenn es klappt
                            Klaro klappt das. Aber copy&paste von mir macht doch keinen Spaß.

                            Ich bau mir das Szenario mal nach. Werde aber erst morgen Vormittag dazu kommen. Ich arbeite noch ein neues CC Attribut ab für die kommende 1.6.0er
                            http://www.premium-contao-themes.com

                            Kommentar


                            • #15
                              Ich werde es auch mal testen. Ich habe nur mit der Ausgabe der Contao Variablen Probleme. Das erschwert mir die Arbeit ein wenig.

                              Kommentar

                              Lädt...
                              X