ViewHelper Pagination in eigener Extbase Extension nutzen

Wer einmal eine Extension mit Fluid und Extbase aufgebaut hat, ist erstaunt wie leicht man die Basis zu seiner eigenen Extension erstellt hat. Eine sehr nützliche Unterstützung dabei sind ViewHelper. In diesem Artikel zeige ich, wie man mit wenigen Schritten den Viewhelper Pagination in die eigene Extension einbindet.

Ich verwende in diesem Artikel wieder unsere Beispiel Extension die wir hier erstellt haben.
Als erstes kopieren wir uns das Template des Pagination ViewHelper vom TYPO3 Core in unsere Extension. Dieses findet ihr in eurer TYPO3 Installation unter folgendem Pfad:
typo3/sysext/fluid/Resources/Private/Templates/ViewHelpers/Widget/Paginate/

Diesen Paginate Ordner kopiert ihr in eure Extension („ha_kategorieext“ ersetzt ihr durch den Ordnernamen eurer Extension):
typo3conf/ext/ha_kategorieext/Resources/Private/Templates/

Das Pagination Template verknüpfen

In der constants.txt eurer TYPO3 Extension verknüpft ihr das Template wie folgt:

plugin.tx_hakategorieext_fekategorieext.view.widget {
    # cat=tx_hakategorieext_fekategorieext/file; type=string; label=Path to pagination template root (FE)
    templateRootPath = EXT:ha_kategorieext/Resources/Private/Templates/Paginate/
}

In die setup.txt eurer TYPO3 Extension kommt folgendes:

plugin.tx_hakategorieext_fekategorieext.view.widget {
    TYPO3\CMS\Fluid\ViewHelpers\Widget\PaginateViewHelper {
        templateRootPath = {$plugin.tx_hakategorieext_fekategorieext.view.templateRootPath}
    }
}

Das List Template mit dem ViewHelper Pagination erweitern

Vor die for each Schleife

<f:for each="{neuerInhalts}" as="neuerInhalt">

fügen wir das Widget ein

<f:widget.paginate objects="{neuerInhalts}" as="paginatedInhalts" configuration="{itemsPerPage: 9, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 5}">

Natürlich dürfen wir nicht vergessen das Widget auch wieder zu schließen. Das machen wir nach der geschlossen for ech Schleife mit

</f:widget.paginate>

Die for each Schleife muss noch angepasst werden

<f:for each="{paginatedInhalts}" as="neuerInhalt">

Fertig sieht das ganze dann so aus:

<f:widget.paginate objects="{neuerInhalts}" as="paginatedInhalts" configuration="{itemsPerPage: 9, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 5}">
   <f:for each="{paginatedInhalts}" as="neuerInhalt">   
     ... 
     ...  
   </f:for>    
</f:widget.paginate>

Jetzt nur noch TYPO3 Cache löschen und von nun an wird eure Liste auf 9 Inhaltselemente gekürzt. (kann bei itemsPerPage angepasst werden)

Fragen, Kritik und Anregungen wie immer in die Kommentare.

Getestet mit TYPO3 7.6.20

* Werbung/Affiliate Link
Aktien und ETFs kaufen

Kommentare

  • Arne-Kolja Bachstein
    13.09.2017 - 13:24 Uhr

    TYPO3 6.7.20 gibt es gar nicht 🙂

    Antworten
    • Markus
      13.09.2017 - 13:38 Uhr

      Hallo Arne-Kolja, ein Zahlendreher 🙂 Danke dir für den Hinweis! Ist korrigiert.

      Antworten
  • Robert Wildling
    20.04.2018 - 21:05 Uhr

    Ist der Path, in den man hinkopieren soll, wirklich richtig angegeben? Sollte das nicht
    typo3conf/ext/ha_kategorieext/Resources/Private/Templates//ViewHelpers/Widget/Paginate
    lauen?

    Jedenfals funktioniert das auf 8.7 nicht. Gibt’s eine Chance hier ein Beispiel für 8.7 und vielleicht auch schon 9.* zu bekommen? Wäre super!

    Antworten
    • Markus
      23.04.2018 - 09:10 Uhr

      Hallo Robert,

      der Pfad ist frei wählbar, solange Du ihn in den Constants korrekt angibst.
      Auch funktioniert das Ganze unter TYPO3 8.7.x. (Eben getestet)
      Für die Version 9.x sind mir bisher auch keine Änderungen bekannt.

      Antworten

Schreibe einen Kommentar

Erforderliche Felder sind entsprechend markiert.

Wird nicht veröffentlicht.