Item-Nummerierung bei Paginierung

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • atomiq
    Contao-Nutzer
    • 09.12.2009
    • 6

    #1

    Item-Nummerierung bei Paginierung

    Hallo zusammen,

    ich würde gerne alle Items mit einer fortlaufenden Nummerierung versehen. Hierzu habe ich im Template folgende Änderungen durchgeführt:

    <?php $index=0 ?>
    <?php foreach ($this->entries as $entry): ?>
    <?php $index++ ?>
    usw.

    Jetzt möchte ich aber, dass bei einem Seitenwechsel die Nummerierung nicht wieder bei 1 anfängt, sondern z.B. so fortgeführt wird:

    Seite 1: 1,2,3
    Seite 2: 4,5,6
    usw.

    Grundsätzlich verstehe ich schon, wie es gehen sollte:

    (Seitennummer - 1) * (max. Anzahl der Items pro Seite) + $index

    Aus welchen Variablen der Catalog-Extension kann ich diese Infos aber ziehen?

    Vielen Dank für Eure Unterstützung.

    Atomiq
  • wittich
    Contao-Nutzer
    • 14.01.2010
    • 48

    #2
    Hier ein Lösungsvorschlag... wobei es natürlich schick wäre noch die Elemente pro Seite automatisch auszulesen...

    PHP-Code:
    $proSeite = 5; // Elemente pro Seite
    $index = 1; // Startzahl
    
    foreach ($this->entries as $entry):
    
     if (isset($_GET['page'])) $nr = $index+($proSeite*$_GET['page']);
     else $nr = $index;
     
     echo $nr.'. Eintrag';
     
     $index++;
     
    endforeach; 
    
    Gruß Valentin

    Kommentar

    • xtra
      Maintainer
      • 02.07.2009
      • 2007

      #3
      Eine derartige Ausgabe ist bislang noch nicht vorgesehen, mach jedoch durchaus Sinn.

      Bitte erstelle ein entsprechendes Ticket bei google code und ich werde das in der neuen Version 2 berycksichtigen.

      In der aktuellen version im ER bleibt dir leider nur ybrig, den Inhalt der pagination zu grep'en um die Gesamtanzahl der Seiten zu erhalten.
      Die Nummer der aktuellen Seite solltest du via Input auslesen koennen(Parameter "page"), sofern angegeben. Ansonsten ist man auf der ersten Seite.

      Gruss
      Chris

      EDIT: Quark, wir haben latyrnich die Gesamtanzahl der Items.
      Also sollte es doch gehen, lediglich die Anzahl der items pro Seite kriegt man nicht ohne weiteres heraus, die sollte jedoch dir als Seitengestalter bekannt sein.

      Im Template:
      Code:
      $amountPages=floor($this->total/25); // sofern 25 Items pro Seite angezeigt werden.
      $currentPage=($this->Input->get('page') ? $this->Input->get('page') : 1);
      EDIT2: Ich habe gerade nochmal im Code nachgesehen. Die Anzahl der Items pro Seite kann auch noch per POST Parameter beeinflusst werden (z.B. bei einer Suche). Der Parameter heisst "per_page". Evtl. moechtest du das auch noch berycksichtigen.

      PS: wittich war schneller :/
      Zuletzt geändert von xtra; 04.02.2010, 12:26.
      Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

      Kommentar

      • atomiq
        Contao-Nutzer
        • 09.12.2009
        • 6

        #4
        Hallo,

        danke für den Lösungsansatz Es hat funktioniert.

        Zur richtigen Berechnung muss nur von $_GET['page'] der Wert 1 abgezogen werden. Damit wird gleichzeitig auch der Fall page=1 berücksichtigt.

        Mein Code sieht jetzt so aus (habe lieber alles in Englisch )

        Code:
        <?php $perpage=3 ?>
        <?php $index=0 ?>
        <?php foreach ($this->entries as $entry): ?>
          <?php $index++ ?>
          <?php if (isset($_GET['page'])): ?>
            <?php $number = $index + ($perpage * ($_GET['page'] - 1)) ?>
          <?php else: ?>
            <?php $number = $index ?>
          <?php endif; ?>
          ...
        <?php endforeach; ?>
        Eine laufende Nummer wäre m. E. auch für die Newslist interessant.

        Danke nochmals!

        atomiq

        Kommentar

        Lädt...