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
Kommentare
TYPO3 6.7.20 gibt es gar nicht 🙂
Hallo Arne-Kolja, ein Zahlendreher 🙂 Danke dir für den Hinweis! Ist korrigiert.
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!
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.
Weitere Beiträge
TYPO3 tx_news Extension Related News in Detailansicht mit Image anzeigen
TYPO3 beliebige MySQL Datenbankfelder mit TypoScript auslesen und anzeigen
Mobile First - Ein Thema für jeden Webseiten Besitzer
Die Top 10 Programmiersprachen, die du 2024 lernen solltest