Ergebnis 1 bis 9 von 9

Thema: Array mit hoch zählung ausgeben?

  1. #1
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard Array mit hoch zählung ausgeben?

    Hi,

    ich habe einen array:
    PHP-Code:
    <?php echo implode(''$this->elements); ?>
    Welche mehrere items ausgibt wie:
    PHP-Code:
    <div class="tile g<?php $intVariableFuerHochzaehlen?>">
        <a href="">
            <h2>Test</h2>
            <p>Test</p>
        </a>
    </div>
    Wie kann ich nun die items hochzählen lassen, von 1 bis 10 und wenn 10 erreicht ist, wieder von vorne beginnend?

    LG & Danke

  2. #2
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Hallo,

    Zum Beispiel so:
    PHP-Code:
    $i=1;
    foreach(
    $this->elements as $element){

        
    //...


        
    if($i==10){
            
    $i=1;
        } else {
            
    $i++;
        }



    Gruss
    Marco

  3. #3
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard

    Habe ich probiert:
    Item template:
    PHP-Code:
    <div class="tile g<?php echo $i?>"> <?php if ($this->headline): ?>
    <<?php echo $this->hl?> class="title"><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>

    <?php if($this->customelement): ?>
    <?php 
    echo $this->customelement?>
    <?php 
    endif; ?>

    </div>
    Und array ausgabe template:
    PHP-Code:
    <?php
            $i
    =1;
            foreach(
    $this->elements as $element){
                echo 
    implode(''$this->elements);

                if(
    $i==10){
                    
    $i=1;
                } else {
                    
    $i++;
                }
            }
            
    ?>
    Jetzt bekomme ich jetzt Statt 6 Items einige mehr und die hochzählung funktioniert nicht:
    17-11-_2015_16-08-29.jpg

  4. #4
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Ist das denn ein eigenes Template von dir? (FE-Modul)
    Irgendwo muss es ja eine Schleife geben, die deine <div class="tile g">...</div> ausgibt. Vor der Schleife kannst du denn die Variable $i definieren und in der Schleife hochzählen und zurücksetzen.

  5. #5
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard

    Das ist ja das Problem, ich finde keine richtige schleife.

    Momemtan bekomme ich den array so oft ausgegeben, wie items in ihm drin sind.

    Ich habe das caroufredsel template, das alle Inhaltselemente mit dieser Variable ausgibt:
    PHP-Code:
     <?php echo implode(''$this->elements); ?>
    Und dann habe ich das template des inhaltselements:
    PHP-Code:
    <div class="tile g<?php echo $i?>"> <?php if ($this->headline): ?>
    <<?php echo $this->hl?> class="title"><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>

    <?php if($this->customelement): ?>
    <?php 
    echo $this->customelement?>
    <?php 
    endif; ?>

    </div>
    Wenn ich mit ShowTempVars mir alles ausgeben lasse, sehe ich den array :
    Code:
    [elements] =&gt; Array
            (
                [0] =&gt;
    <div class="tile g">
        <a href="">
            <h2>Test</h2>
            <p>Test</p>
        </a>
    </div>
    
    
                [1] =&gt;
    <div class="tile g">
        <a href="">
            <h2>Test</h2>
            <p>Test</p>
        </a>
    </div>
    
    
                [2] =&gt;
    <div class="tile g">
        <a href="">
            <h2>Test</h2>
            <p>Test</p>
        </a>
    </div>
    
    
                [3] =&gt;
    <div class="tile g">
        <a href="">
            <h2>Test</h2>
            <p>Test</p>
        </a>
    </div>
    
    
                [4] =&gt;
    <div class="tile g">
        <a href="">
            <h2>Test</h2>
            <p>Test</p>
        </a>
    </div>
    
    
    
                [5] =&gt;
    <div class="tile g">
        <a href="">
            <h2>Test</h2>
            <p>Test</p>
        </a>
    </div>
    
    
    
            )
    Geändert von fr3d83 (17.11.2015 um 15:27 Uhr)

  6. #6
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Ach so, sagt das doch gleich

    Probier mal das:

    PHP-Code:
    <?php
    if(!isset($GLOBALS['mycounter'])){
        
    $GLOBALS['mycounter'] = 1;
    }
    ?>

    <div class="tile g<?php echo $GLOBALS['mycounter']; ?>"> <?php if ($this->headline): ?>
    <<?php echo $this->hl?> class="title"><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>

    <?php if($this->customelement): ?>
    <?php 
    echo $this->customelement?>
    <?php 
    endif; ?>

    </div>

    <?php
    if($GLOBALS['mycounter']==10){
        
    $GLOBALS['mycounter']=1;
    } else {
        
    $GLOBALS['mycounter']++;

    ?>

  7. #7
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard

    DER GEHT!!
    Was ist denn isset$GLOBAL[] bzw $GLOBAL[]?

  8. #8
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    HTML Geltungsbereich von Variablen

    Zitat Zitat von fr3d83 Beitrag anzeigen
    Was ist denn isset$GLOBAL[] bzw $GLOBAL[]?
    $GLOBAL ist eine globale Variable und gehört zu den sogenannten "Superglobals". Auf eine globale Variable kann auf der ganzen aktuellen Seite bzw. im ganzen Script darauf zugegriffen werden.

    Die Variable $i kannst du im Template eben nicht verwenden, da $i nur in dieser Template-Datei gültig ist. Das Modul ruft aber das Ausgabe-Template pro Eintrag (item) immer wieder auf und so wäre der Wert von $i immer = 1. Mit der globalen Variable können wir das umgehen, da diese einen grösseren Gültigkeitsbereichen hat
    Siehe dazu auch Geltungsbereich von Variablen

    isset überprüft einfach, ob die Variable vorhanden ist. Bzw. if(!isset($GLOBALS['mycounter'])) bedeutet "wenn nicht vorhanden, dann...", weil das Ausrufezeichen ! invertiert das Ergebnis.

    Gruss
    Marco

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.949

    Standard

    Nur als Bemerkung am Rande: anstelle if ($i==10) etc. könnte man auch eleganter den Modulo-Operator (Modulus) http://php.net/manual/de/language.op...arithmetic.php verwenden. $i==10 genau dann wenn $i % 10 == 0. So kann man sich viele Zeilen Code sparen ...
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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
  •