Ergebnis 1 bis 7 von 7

Thema: In einer foreach-Schleife jedes x.te Element auswählen

  1. #1
    Contao-Fan Avatar von k-webdesign
    Registriert seit
    07.06.2010.
    Ort
    Karlsruhe
    Beiträge
    648
    Partner-ID
    5911
    User beschenken
    Wunschliste

    Standard In einer foreach-Schleife jedes x.te Element auswählen

    Hi,

    ich würde gerne ein Isotope-Template anpassen (finde aber, es passt besser in diesen Bereich als in Isotope, ist ja eine generelle Frage):

    PHP-Code:
    <?php foreach( $this->info as $type => $data ): ?>
    <div class="info_container <?php echo $type $data['class']; ?>">
        <h3><?php echo $data['headline']; ?></h3>
        <div class="info"><?php echo $data['info']; ?></div>
    </div>
    <?php endforeach; ?>
    Damit wird dieses div 4x ausgespuckt, mir ist jetzt spontan kein Fall bekannt, an dem es mehr oder weniger wären. Ich würde das gerne so verbinden, dass die ersten beiden divs ein weiteres Div um sich hätten, z.B. mit der Klasse "left" und die anderen beiden eins mit der Klasse "right". Geht das überhaupt?

    Rein mit CSS lässt sich das echt schwer lösen, zumindest fällt mir spontan nix ein, nth-child fällt aus. Ich würde gerne 2 untereinander listen und dieses div dann floaten lasen, damit die anderen beiden daneben wiederum untereinander gelistet werden.

  2. #2
    Contao-Fan
    Registriert seit
    02.03.2013.
    Beiträge
    436

    Standard

    Erstell einfach eine Zählvariable $count=0 und nutze eine If-Abfrage für dein extra-div.
    Nicht getestet, fehleranfällig und unschön, aber so könnte es in etwa funktionieren.
    HTML-Code:
    <?php $count=0; ?>
    <?php foreach( $this->info as $type => $data ): ?> 
    if [$count<2){
    <div class="left">
    <div class="info_container <?php echo $type . $data['class']; ?>"> 
        <h3><?php echo $data['headline']; ?></h3> 
        <div class="info"><?php echo $data['info']; ?></div> 
    </div> 
    </div>;}
    else{
    <div class="right">
    <div class="info_container <?php echo $type . $data['class']; ?>"> 
        <h3><?php echo $data['headline']; ?></h3> 
        <div class="info"><?php echo $data['info']; ?></div> 
    </div> 
    </div>;}
    $count++;
    <?php endforeach; ?>

  3. #3
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Unschön nicht getestet, könnte funktionieren. Schau ich aber jetzt nicht an.

    Schön: Einsatz eines Grid, das nested-Elemente unterstützt. Templates zu Darstellungszwecken verbiegen halte ich für schlechten Stil.

  4. #4
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von lucina Beitrag anzeigen
    Templates zu Darstellungszwecken verbiegen halte ich für schlechten Stil.
    Stimme ich zu.

    Um deine Frage aber trotzdem zu beantworten gibt es das hier:
    Rein mit CSS lässt sich das echt schwer lösen, zumindest fällt mir spontan nix ein, nth-child fällt aus
    Jedes nte Element lässt sich mit dem Modulu-Operator darstellen.

    Das ist so ähnlich wie das Rest-Rechnen aus der Grundschule.

    PHP-Code:

    if($count === 0)
    {
       
    // Bei jedem zweiten Element

    Beispiele und Beschreibung: http://www.php.net/manual/de/languag...etic.php#70424

    Wenn ich euch helfen konnte könnt ihr euch gerne mal
    meine Amazon Wunschliste anschauen. Dankeschön.

  5. #5
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von wulf Beitrag anzeigen
    Nicht getestet, fehleranfällig und unschön, aber so könnte es in etwa funktionieren.
    Das funktioniert sogar ganz sicher nicht. :-)

    Wenn ich euch helfen konnte könnt ihr euch gerne mal
    meine Amazon Wunschliste anschauen. Dankeschön.

  6. #6
    Contao-Fan Avatar von k-webdesign
    Registriert seit
    07.06.2010.
    Ort
    Karlsruhe
    Beiträge
    648
    Partner-ID
    5911
    User beschenken
    Wunschliste

    Standard

    Ich bin jetzt leider doch auf einen Fall gestoßen, bei dem die linke Spalte nur 1 Element haben soll, d.h. wie ich mir das vorgestellt hatte ging es gar nicht Daher musste ich jetzt lange am CSS wurschteln, bis es richtig hingehauen hat. Trotzdem danke euch allen!

  7. #7
    Contao-Fan Avatar von kayyy
    Registriert seit
    01.07.2009.
    Beiträge
    457
    Partner-ID
    8987

    Standard

    Alternativ wäre es recht simpel mit jQuery gegangen ;-)

    Gesendet von meinem GT-I9300 mit Tapatalk

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
  •