Ergebnis 1 bis 19 von 19

Thema: Core-Galerie - cssSlider aus Core-Galerie

  1. #1
    Contao-Fan
    Registriert seit
    30.10.2009.
    Ort
    Iserlohn
    Beiträge
    346
    User beschenken
    Wunschliste

    Standard Core-Galerie - cssSlider aus Core-Galerie

    Hallo zusammen,

    ich möchte gerne einen cssSlider aus der Standard Galerie generieren. Hierzu benötige ich pro Bild ein Input-Feld mit einem "Zähler".

    HTML-Code:
    <ul class="slideList">
      <?php foreach ($this->body as $class=>$row): ?>
      <?php $i = 0; foreach ($row as $col): $i++; ?> <-- Hier soll gezählt werden
        <?php foreach ($row as $col): ?>
          <?php if ($col->addImage): ?>
            <li class="slide slide<? $i; ?> <?= $class ?> <?= $col->class ?>"> <-- Das Ergebnis soll hier eingefügt werden.
              <figure class="image_container"<?php if ($col->margin): ?> style="<?= $col->margin ?>"<?php endif; ?>>
                <?php if ($col->href): ?>
                  <a href="<?= $col->href ?>"<?= $col->attributes ?> title="<?= $col->alt ?>"><?php $this->insert('picture_default', $col->picture); ?></a>
                <?php else: ?> 
                 <?php $this->insert('picture_default', $col->picture); ?>
                <?php endif; ?>
                <?php if ($col->caption): ?>
                  <figcaption class="caption"><?= $col->caption ?></figcaption>
                <?php endif; ?>
              </figure>
            </li>
          <?php endif; ?>
        <?php endforeach; ?>
      <?php endforeach; ?>
    </ul>
    Leider bekomme ich so immer einen Parse Error...

    Ich benötige bitte mal einen Tipp, wie ich hier weiter kommen kann...

    LG
    Frank
    Geändert von phyton2706 (05.05.2017 um 06:48 Uhr)
    Euer Phyton2706

  2. #2
    Contao-Fan
    Registriert seit
    03.01.2012.
    Beiträge
    813

    Standard

    Mir fällt nur auf, dass du bei der Ausgabe von $i am Anfang kein = Zeichen benutzt. Also nur <? statt <?=

  3. #3
    Contao-Fan
    Registriert seit
    03.01.2012.
    Beiträge
    813

    Standard

    Achja und außerdem werden deine PHP-Kommentare nicht richtig geschlossen (es sei denn du hast sie jetzt nur fürs Forum eingefügt)

  4. #4
    Contao-Fan
    Registriert seit
    30.10.2009.
    Ort
    Iserlohn
    Beiträge
    346
    User beschenken
    Wunschliste

    Standard

    Hallo dazzle89,

    Das bei der Ausgabe ein "=" fehlt, ist mir auch schon aufgefallen, und wurde schon korrigiert.
    Allerdings kommt der Fehler aber aus Zeile mit
    PHP-Code:
    <?php $i 0; ...
    Die Kommentare habe ich nur für das Forum eingefütgt...

    Euer Phyton2706

  5. #5
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Und hast du mehr "foreach" als "endforeach" in deinem Code.
    Du musst außerdem nicht jede Zeile einzeln als PHP-Code definieren. Es könnte auch so gehen, falls du das übersichtlicher findest:
    PHP-Code:
    <?php 
    echo '<ul class="slideList">';
    foreach (
    $this->body as $class=>$row) {
      
    $i 0;
      foreach (
    $row as $col) {
        
    $i++;
        foreach (
    $row as $col) {
          if (
    $col->addImage) {
            echo 
    '<li class="slide slide'.$i.' '.$class.' '.$col->class.'"><figure class="image_container"';
              if (
    $col->margin) {
                echo 
    'style="'.$col->margin.'"';
              }
              echo 
    '>';
              if (
    $col->href) {
                echo 
    '<a href="'.$col->href.' '.$col->attributes.' title="'.$col->alt.'">';
                
    $this->insert('picture_default'$col->picture);
                echo 
    '</a>';
              } else {
                
    $this->insert('picture_default'$col->picture);
              }
              if (
    $col->caption) {
                echo 
    '<figcaption class="caption">'.$col->caption.'</figcaption>';
              }
            echo 
    '</figure></li>';
          }
        }
      }
    }
    echo 
    '</ul>';
    ?>

  6. #6
    Contao-Fan
    Registriert seit
    30.10.2009.
    Ort
    Iserlohn
    Beiträge
    346
    User beschenken
    Wunschliste

    Standard

    Hallo folkfreund,

    das hat leider nicht geklappt... Ich bekomme immer eine 1 ausgegeben.

    Ich poste mal meinen kompletten Code für mein Template:
    PHP-Code:
    <div class="sliderWrapper">
        <div class="slider">
            <input type="radio" name="slider" class="control01" id="slide1" checked="checked">
            <?php foreach ($this->body as $class=>$row): ?>
           <?php $i 1; foreach ($row as $col): $i++; ?>
             <input type="radio" name="slider" class="control01" id="slide<?= $i?>"> 
           <?php endforeach; ?>
            <?php foreach ($this->body as $class=>$row): ?>
            <?php $i 1; foreach ($row as $col): $i++; ?>
           <input type="radio" name="slider" class="control02" id="slide<?= $i?>">
            <?php endforeach; ?>

            <ul class="slideList">
             <?php foreach ($this->body as $class=>$row): ?>
              <?php $i 0; foreach ($row as $col): $i++; ?> 
                <?php foreach ($row as $col): ?>
                  <?php if ($col->addImage): ?>
                    <li class="slide slide<?= $i?> <?= $class ?> <?= $col->class ?>">
                      <figure class="image_container"<?php if ($col->margin): ?> style="<?= $col->margin ?>"<?php endif; ?>>
                        <?php if ($col->href): ?>
                          <a href="<?= $col->href ?>"<?= $col->attributes ?> title="<?= $col->alt ?>"><?php $this->insert('picture_default'$col->picture); ?></a>
                       <?php else: ?>
                          <?php $this->insert('picture_default'$col->picture); ?>
                        <?php endif; ?>
                        <?php if ($col->caption): ?>
                          <figcaption class="caption"><?= $col->caption ?></figcaption>
                        <?php endif; ?>
                      </figure>
                    </li>
                  <?php endif; ?>
                <?php endforeach; ?>
              <?php endforeach; ?>
            </ul>
     
           <ul class="slideControl slideControl01">
              <?php foreach ($this->body as $class=>$row): ?>
            <?php $i 0; foreach ($row as $col): $i++; ?>
                <?php foreach ($row as $col): ?>
                    <li><label for="slide<?= $i?>">Nummer <?= $i?></label></li>
               <?php endforeach; ?>
              <?php endforeach; ?>
            </ul>
            <ul class="slideControl slideControl02">
              <?php foreach ($this->body as $class=>$row): ?>
             <?php $i 0; foreach ($row as $col): $i++; ?>
                <?php foreach ($row as $col): ?>
                    <li><label for="slide1<?= $i?>">Nummer 1<?= $i?></label></li>
                <?php endforeach; ?>
              <?php endforeach; ?>
            </ul>
        </div>
    </div>
    Euer Phyton2706

  7. #7
    Contao-Fan
    Registriert seit
    03.01.2012.
    Beiträge
    813

    Standard

    EDIT:

    Du hast 2 mal die gleiche Schleife

    foreach ($row as $col)

    ineinander.

    Probier mal so etwas:

    Code:
            <ul class="slideList">
             <?php foreach ($this->body as $class=>$row): ?>
              <?php $i = 1; ?> 
                <?php foreach ($row as $col): ?>
                  <?php if ($col->addImage): ?>
                    <li class="slide slide<?= $i; ?> <?= $class ?> <?= $col->class ?>">
                      <figure class="image_container"<?php if ($col->margin): ?> style="<?= $col->margin ?>"<?php endif; ?>>
                        <?php if ($col->href): ?>
                          <a href="<?= $col->href ?>"<?= $col->attributes ?> title="<?= $col->alt ?>"><?php $this->insert('picture_default', $col->picture); ?></a>
                       <?php else: ?>
                          <?php $this->insert('picture_default', $col->picture); ?>
                        <?php endif; ?>
                        <?php if ($col->caption): ?>
                          <figcaption class="caption"><?= $col->caption ?></figcaption>
                        <?php endif; ?>
                      </figure>
                    </li>
                  <?php endif; ?>
                  <?php $i++; ?>
                <?php endforeach; ?>
              <?php endforeach; ?>
            </ul>
    Geändert von dazzle89 (03.05.2017 um 07:11 Uhr)

  8. #8
    Contao-Fan
    Registriert seit
    30.10.2009.
    Ort
    Iserlohn
    Beiträge
    346
    User beschenken
    Wunschliste

    Standard

    Auch hierbei bekomme ich nur eine 1 zurück geliefert...
    Euer Phyton2706

  9. #9
    Contao-Fan
    Registriert seit
    03.01.2012.
    Beiträge
    813

    Standard

    Bei den input-Feldern hast du jeweils 2 mal eine foreach-Schleife, schließt sie aber nur mit einem endforeach. Das ist auf jeden Fall falsch.

    Werden denn so viele input-Felder ausgegeben wie du möchtest oder nur eines?

  10. #10
    Contao-Fan
    Registriert seit
    30.10.2009.
    Ort
    Iserlohn
    Beiträge
    346
    User beschenken
    Wunschliste

    Standard

    Die Anzahl der Input-Felder passt.

    Nur bei slide<?= $i; ?> steht immer slide1
    Euer Phyton2706

  11. #11
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Außerdem siehe hier: http://php.net/manual/en/control-str...ive-syntax.php

    Deine Schreibweise
    PHP-Code:
    <?php $i 1; foreach ($row as $col): $i++; ?>
    ist vermutlich nicht valide, da hinter dem : das PHP-foreach beendet ist.
    Note:
    Mixing syntaxes in the same control block is not supported.

    Korrekt erscheint mir daher
    PHP-Code:
    <?php $i 1; foreach ($row as $col): ?>
    <?php $i
    ++; ?>

  12. #12
    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

    Nein, das ist in Ordnung so. Der Doppelpunkt entspricht einfach einem "{".

    Was da gemeint ist: Vermische nicht diese Schreibweisen mit dem ":" und dem "{".

    Das mit dem Zähler in einer Zeile macht man bei der foreach(): Schreibweise sehr oft, weil es übersichtlich ist.
    Geändert von Andreas (03.05.2017 um 16:13 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

  13. #13
    Contao-Fan
    Registriert seit
    30.10.2009.
    Ort
    Iserlohn
    Beiträge
    346
    User beschenken
    Wunschliste

    Standard

    Auch damit bin ich nicht weiter gekommen... Jetzt wird mir für jedes li-Element "slide2" ausgegeben.
    Mein aktueller Versuch sieht so aus:
    PHP-Code:
    <div class="sliderWrapper">
        <div class="slider">
            <?php foreach ($this->body as $class=>$row): ?>
            <input type="radio" name="slider" class="control01" id="<?= $class ?>" checked=" "> 
            <?php endforeach; ?>
            <?php foreach ($this->body as $class=>$row): ?>
            <input type="radio" name="slider" class="control02" id="<?= $class ?>"> 
            <?php endforeach; ?>
     
           <ul class="slideList">
            <?php foreach ($this->body as $class=>$row): ?>
               <?php foreach ($row as $col): ?>
                <?php if ($col->addImage): ?>
                  <li class="slide <?= $class ?> <?= $col->class ?>">
                     <figure class="image_container"<?php if ($col->margin): ?> style="<?= $col->margin ?>"<?php endif; ?>>
                        <?php if ($col->href): ?>
                          <a href="<?= $col->href ?>"<?= $col->attributes ?> title="<?= $col->alt ?>"><?php $this->insert('picture_default'$col->picture); ?></a>
                      <?php else: ?>
                          <?php $this->insert('picture_default'$col->picture); ?>
                        <?php endif; ?>
                        <?php if ($col->caption): ?>
                          <figcaption class="caption"><?= $col->caption ?></figcaption>
                        <?php endif; ?>                  </figure>
                    </li>
                <?php endif; ?>
                <?php endforeach; ?>
              <?php endforeach; ?>
            </ul>
     
            <ul class="slideControl slideControl01">
            <?php foreach ($this->body as $class=>$row): ?>
                <?php foreach ($row as $col): ?>
                <li><label for="<?= $class ?>"><?= $class ?></label></li>
                <?php endforeach; ?>
            <?php endforeach; ?>
            </ul>
            <ul class="slideControl slideControl02">
            <?php foreach ($this->body as $class=>$row): ?>
                <?php foreach ($row as $col): ?>
                <li><label for="1<?= $class ?>">1<?= $class ?></label></li>
                <?php endforeach; ?>
            <?php endforeach; ?>
            </ul>
        </div>
    </div>
    So habe ich zwar eindeutige Klassen, aber nicht so, wie ich es gerne hätte...

    Vielleicht habe ich auch den komplett falschen Ansatz gewählt?

    Ich versuche noch mal meine Intesion genauer zu beschreiben.:
    Aus der Standard-Galerie soll eine CSS-Only-Slideshow werden.

    Hierzu versuche ich gerade das Template um ein paar weitere CSS-Klassen zu erweitern.
    Das li-Element und die noch benötigten Input-Felder, brauchen alle eine eindeutige ID (z.B. slide_0 - slide_26). -> Das versuche ich über die zusätzliche Schleife zu generieren.

    Das ist doch soweit korrekt, oder gibt es einen einfacheren, schnelleren Weg?
    Euer Phyton2706

  14. #14
    Contao-Fan
    Registriert seit
    03.01.2012.
    Beiträge
    813

    Standard

    Nun schreibst du deine inputs in die falsche Schleife...

    Sie müssen in einer <?php foreach ($row as $col): ?> stehen. Also:

    Code:
            <?php foreach ($row as $col): ?>
            <input type="radio" name="slider" class="control01" id="<?= $class ?>" checked=" "> 
            <?php endforeach; ?>
            <?php foreach ($row as $col): ?>
            <input type="radio" name="slider" class="control02" id="<?= $class ?>"> 
            <?php endforeach; ?>
    Wobei ich nicht verstehe, wieso du hier 2 mal die gleiche Schleife benutzt. Du kannst doch einfache beide Inputs zusammen in EINER Schleife ausgeben?

    Und ich denke, dass dein Vorgehen mit der Zählvariable der richtige Weg für sowas ist. Würde ich wohl auch so machen. Wobei ich nicht weiß, ob das Template für jeden Eintrag eine ID mitgibt. Wenn ja, könnte man natürlich die ID an die Klasse ranhängen, sofern das dann auch mit deinem CSS nachher klappt.

  15. #15
    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

    Ich kenne [Galerie] nicht, aber in ner Core-Galerie würde das so gehen. Geändert sind nur die Zeilen mit HTML-Kommentar dahinter und der kleine PHP-Block.
    PHP-Code:
    ...
      <?php $itemCount 0; foreach ($this->body as $class=>$row): ?> <!-- geändert ($itemCount) -->
        <?php foreach ($row as $col): $itemCount++; ?> <!-- geändert ($itemCount) -->

        <?php
          $countString 
    'img_'.$itemCount;
          
    $input '<input id="'.$countString.'" type="radio" name="slide">';
          
    $col->class $col->class.' '.$countString;
        
    ?>

          <?php if ($col->addImage): ?>
            <li class="<?= $class ?> <?= $col->class ?>">
              <?= $input ?> <!-- neu -->
    ...
    Aber mich würde dieser CSS-Slider mal interessieren. Hast du mal einen Link auf diesen Slider.
    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

  16. #16
    Contao-Fan
    Registriert seit
    30.10.2009.
    Ort
    Iserlohn
    Beiträge
    346
    User beschenken
    Wunschliste

    Standard

    Hallo Andreas,
    sorry, aber ich bin heute nicht zum Testen bekommen...
    Zuerst: Ich möchte dir Core-Galerie anpassen. Wenn nicht wieder etwas dazwischen kommt, teste ich morgen Mal deinen Absatz.
    Den Link zu dem Slider reiche ich morgen nach.

    Gesendet von meinem Nexus 5X mit Tapatalk
    Euer Phyton2706

  17. #17
    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

    Zitat Zitat von phyton2706 Beitrag anzeigen
    Zuerst: Ich möchte dir Core-Galerie anpassen.
    Ah, ok, hatte mich schon gewundert, was das für ne Erweiterung sein soll. Dann käme der Thread eigentlich nicht hier in dieses Sub-Forum. Mit den eckigen Klammern um den Erweiterungsnamen kennzeichnen wir immer, dass es sich um eine Erweiterung handelt, so wie hier: https://contao.org/de/erweiterungsli....80029.de.html. Das ist dann auch gleich der Ordnername der Erweiterung.

    Mach am besten mal die eckigen Klammern im Titel weg, das kann sonst in die Irre führen.

    Wenn ich das gewusst hätte, hätte ich schon eher mal nachgesehen. Ist ein normales Inhaltselement (CE).
    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

  18. #18
    Contao-Fan
    Registriert seit
    30.10.2009.
    Ort
    Iserlohn
    Beiträge
    346
    User beschenken
    Wunschliste

    Standard

    Hallo Andreas,

    ich habe den Titel angepasst.

    Und hier, wie versprochen der Link zu dem cssSlider:

    http://ebene11.com/slider-als-keyfra...-mit-css3.html
    Euer Phyton2706

  19. #19
    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

    Ah, ok. Dann kannst du aus meinem Beispiel die Inputs nicht benutzen, weil ich die ja jeweils zum Bild gepackt habe. Du brauchst noch die Anzahl der Bilder, um die Inputs und die ul.slideControl(s) mit ner while() oder for() Schleife zu erstellen. Die bekommst du so.
    PHP-Code:
    $total count($this->multiSRC); 
    Oder du kannst auch direkt über $this->multiSRC rödeln.
    PHP-Code:
    foreach($this->multiSRC as $key => $uuid)
    {
      echo 
    $key;

    Und dann musst du dass CSS dynamisch an die Anzahl der Bilder anpassen. Das musst du in dem Template machen und das CSS dann so in den HEAD bringen.
    PHP-Code:
    $GLOBALS['TL_HEAD'] = '
      <style>
        body {
          background-color: red;
        }
      </style>
    '

    Ganz ehrlich: Als Herausforderung witzig, aber wenn mich da einer fragen würde, ob ich was anpassen könnte, würde ich ablehnen. Die Logik und das was passiert ist durch Ansehen des Codes nicht oder nur sehr schwer zu enträtseln. Da würde ich lieber ne Slideshow mit JS selber programmieren.
    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

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
  •