Fluid Pagination Widget

Nachdem ich es geschafft habe, dem Fluid Pagination Widget ein eigenes Template aufzuzwingen, musste ich nun weitere Anpassungen vornehmen. Da ich so viele Datensätze habe, umfasste meine Liste mit Seiten über 1000 Stück. Selbst wenn ich sie alle nebeneinander darstellen kann, ist die Blätterfunktion kaum zu gebrauchen. Ich wollte daher folgendes erreichen:
– konfigurierbare Anzahl der Seiten, die neben der aktuellen Seite angezeigt werden
– Link zu allerersten und allerletzten Seite
– falls Seiten übersprungen werden, sollte es erkennbar sein
Mein Ziel also:

Um das zu erreichen, habe ich zunächst den Controller angepasst: ich führe einen neuen Parameter ein (adjacentPagelinks), damit kann die Anzahl der Seiten neben der aktuellen Seite konfiguriert werden. In der Funktion buildPagination, die ich zunächst aus der PaginateController-Klasse von Fluid übernommen habe verarbeite ich den neuen Parameter. Die For-Schleife, die die Links zu den Seiten generiert, beginnt nun nicht mehr bei 1 und endet bei $this->numberOfPages. Stattdessen beginnt sie bei einer erreichneten $firstPage und endet bei $lastPage. Wenn $firstPage größer als 2 ist, dann wurde eine Seite übersprungen und es müssen Punkte (…) angezeigt werden. Das gleiche mache ich mit $lastPage.
Hier ist der komplette PaginationController-Code.

Es müssen natürlich Anpassungen im Template vorgenommen werden. Die im Controller gesetzten Variablen firstPage, spacerAfterFirst, lastPage und spacerBeforeLast müssen im Template entsprechend verarbeitet werden. Ein Auszug aus dem Code des Templates ist hier.

1 Kommentar

  1. Marcel

    Als ich diese Anleitung umsetzten wollte, habe ich mir die Funktion “buildPagination” angesehen und bin dort auf den Parameter “maximumNumberOfLinks” gestoßen. Der erzeugt genau das gewünschte Ergebnis, ohne Manipulation.

    Schönen Abend.