[gelöst] Pagination für die Bildergalerie (file Feld)

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • grand
    Contao-Nutzer
    • 17.07.2009
    • 106

    #1

    [gelöst] Pagination für die Bildergalerie (file Feld)

    Hallo Leute,

    ich hab mir mla zu Testzwecken einen Katalog 2.0 Beta2 und ein frisches 2.10.3 installiert.

    Soweit läuft es erstmal ganz gut, ein Problem habe ich aber bei der Bildergalerie.

    Ich habe mehrere Bilder und die sollen nicht alle als eine Wurst angezeigt werden, ich würde gerne eine Pagination einsetzen.

    Gibt es eine Möglichkeit eine Pagination zu verwenden und diverse Setings zu definieren die dann global verwendet werden.

    Wenn jemand das schonmal gemacht hat udn mir einen Tip geben könne wäre das sehr schön.

    Danke

    G
    Zuletzt geändert von grand; 29.11.2011, 21:40.
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo grand,
    sowas ist tatsächlich nicht drinn bisher.
    Könntest das ja mal als Feature vorschlagen: http://www.contao-forge.org/projects...s?per_page=100

    Ich persönlich würde das dann nun im Template regeln.
    Allerdings etwas anders.. eher mit sowas wie Tabs (braucht ja nicht so aussehen): http://blog.ginader.de/archives/2009...lich-macht.php (kann man auch mit mootools machen, einfach google bemühen).

    Im Template dann einfach x Bilder innerhalb von einem HTML Konstrukt ausgeben lassen und dann noch eine Zahl ausgeben für die Seite. Vorteil dabei ist auch: alles ist auf einer Seite und der Besucher spart sich das neu laden (Nachteil: der erste Seitenaufbau dauert eben etwas länger... aber dafür gibts ja den guten Contao-Cache).

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

    Kommentar

    • xchs
      Administrator
      • 19.06.2009
      • 14682

      #3
      Zitat von grand Beitrag anzeigen
      Ich habe mehrere Bilder und die sollen nicht alle als eine Wurst angezeigt werden, ich würde gerne eine Pagination einsetzen.

      Gibt es eine Möglichkeit eine Pagination zu verwenden und diverse Setings zu definieren die dann global verwendet werden.

      Wenn jemand das schonmal gemacht hat udn mir einen Tip geben könne wäre das sehr schön.
      Von lindesbs gibt es dazu im Contao Wiki ein Beispiel, wie man das im Template machen könnte: http://de.contaowiki.org/Catalog_Det...der_paginieren
      Contao Community Administrator

      [Unterstützungsmöglichkeiten]
      sigpic

      Kommentar

      • MacKP
        Contao-Yoda
        • 15.06.2009
        • 13315

        #4
        Oh, noch ein kleines Fundstück:


        (danke @ lindesbs fürs posten)

        Viele Grüße
        Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
        [Arbeitet bei -> Paus Design & Medien]
        "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

        Kommentar

        • grand
          Contao-Nutzer
          • 17.07.2009
          • 106

          #5
          Lösung (danke an lindesbs) funktioniert auch mit 2.10.3

          Damit das auch jemand anders verwenden kann hier mal meine Vorgehensweise:

          Als erstes hab ich den Templategenerator von Lindesbs installiert: http://www.contao.org/extension-list....10009.en.html

          Anschliessend gibts in den Modulen ein neues Icon hinter dem Catalog Lister und dem Catalog Reader Modul.
          Nach einem Klick auf das Icon hinter dem Catalog Reader Modul öffnet sich eine Seite wo man aussuchen kann welches Template man generieren möchte und gibt an welche Fileextension man verwenden will (html5, xhtml, tpl).

          Dann auf den "Select" Button um die Auswahl zu bestätigen und das Template zu generieren, unterhalb sieht man noch ein Feld in dem man den Namen für das Template angeben kann, wenn der Namen angepasst ist muss man nur noch auf den "Speichern" Button klicken und das Template wurde im Ordner /templates von Contao abgelegt und ist somit update sicher.

          Automatisch wird das gespeicherte Template im Readermodul eingetragen, es muss also nicht noch extra ausgewählt werden.

          Anschliessend muss noch der Code für die Pagination in das Template integriert werden: http://de.contaowiki.org/Catalog_Det...der_paginieren

          Dazu öffnet man das Template und sucht das Feld das die Bildergalerie erstellt, hier löscht mann die beiden DIVs "Label" und "Value" raus und kopiert den code wie im WIKI rein.
          Zum Schluss muss noch die Variable angepasst werden, im WIKI "allImages" muss auf den eigenen Feldnamen geändert werden.

          Mit der Variable
          PHP-Code:
          $numPerPage = 5; 
          
          stellt man die Anzahl der Bilder pro Seite ein.

          Noch ein kurzer Nachtrag:

          Damit bei einem weiterschalten der Pagination die Seite auch wieder zur Bildergalerie springt gibts hier noch eine angepasstes Template für die "pagination.html5"

          PHP-Code:
          <!-- indexer::stop -->
          <div class="pagination block">
            <a name="pagination"></a>
          <p><?php echo $this->total; ?></p>
          <ul>
          <?php if ($this->hasFirst): ?>
            <li class="first"><a href="<?php echo $this->first['href']; ?>#pagination" class="first" title="<?php echo $this->first['title']; ?>"><?php echo $this->first['link']; ?></a></li>
          <?php endif; ?>
          <?php if ($this->hasPrevious): ?>
            <li class="previous"><a href="<?php echo $this->previous['href']; ?>#pagination" class="previous" title="<?php echo $this->previous['title']; ?>"><?php echo $this->previous['link']; ?></a></li>
          <?php endif; ?>
          
          <?php
              $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
              $strResult = $this->items;
              if(preg_match_all("/$regexp/siU", $this->items, $matches, PREG_SET_ORDER)) 
              { 
                  foreach($matches as $match) 
                  { 
                      $strResult = str_replace($match[2],$match[2].'#pagination',$strResult);
                  }
              }
            
              echo  $strResult;
          ?>
          
          <?php if ($this->hasNext): ?>
            <li class="next"><a href="<?php echo $this->next['href']; ?>#pagination" class="next" title="<?php echo $this->next['title']; ?>"><?php echo $this->next['link']; ?></a></li>
          <?php endif; ?>
          <?php if ($this->hasLast): ?>
            <li class="last"><a href="<?php echo $this->last['href']; ?>#pagination" class="last" title="<?php echo $this->last['title']; ?>"><?php echo $this->last['link']; ?></a></li>
          <?php endif; ?>
          </ul>
          </div>
          <!-- indexer::continue -->
          Das sollte es gewesen sein!

          Nochmal herzlichen Dank an lindesbs für die nette und extem schnelle Hilfe bei meinem Problem.
          Zuletzt geändert von grand; 29.11.2011, 22:07.

          Kommentar

          Lädt...