Heute musste ich die Default Joomla Pagination einer Joomla 2.5 Installation anpassen. Das Default Html der deutschen Joomla Installation sieht ja etwas spartanisch aus. Nun wollte ich per Icon Font (in diesem Fall Font Awesome aus dem Bootstrap Framework) die Pagination etwas aufhübschen. Das Ergebnis sollte in etwa so aussehen:
See the Pen Enhance Joomla 2.5 Pagination with Font Awesome Icons by Hans Spieß (@hansspiess) on CodePen.
Mein erster Gedanke war, ein Override für die jeweiligen language files anzulegen. Dafür muß man die Datei ROOT/language/overrides/de-DE.override.ini anlegen als language override. Leider zerhacken die Anführungszeichen in den Icon Classes die Html Ausgabe bei Joomla, da dieselben auch als title Value benutzt werden in den erzeugten Links. Daher muß man, um dies zu verhindern, noch die Html Augabe modifizieren. Dazu legt man die Datei ROOT/Templates/YOURTEMPLATE/html/pagination.php an. Diese enthält zwei öffentliche Funktionen, die der Joomla Core Klasse JPagination (definiert in Datei ROOT/libraries/joomla/html/pagination.php) entlehnt sind. Hier wird der Html Ausgabe der title-Tags nur ein strip_tags() vorangestellt, und schon funktioniert das Ganze!
;to be placed in ROOT/language/overrides/ JLIB_HTML_START="<i class=\"fa fa-fast-backward\"></i>" JPREV="<i class=\"fa fa-backward\"></i>" JNEXT="<i class=\"fa fa-forward\"></i>" JLIB_HTML_END="<i class=\"fa fa-fast-forward\"></i>"
/** * Override Method to create an active pagination link to the item without breaking the html with complex language strings * * to be placed in ROOT/Templates/YOURTEMPLATE/html/ * * @param JPaginationObject &$item The object with which to make an active link. * * @return string HTML link * * @since 11.1 */ function pagination_item_active(&$item) { $app = JFactory::getApplication(); if ($app->isAdmin()) { if ($item->base > 0) { return "<a title=\"" . strip_tags($item->text) . "\" onclick=\"document.adminForm." . $this->prefix . "limitstart.value=" . $item->base . "; Joomla.submitform();return false;\">" . $item->text . "</a>"; } else { return "<a title=\"" . strip_tags($item->text) . "\" onclick=\"document.adminForm." . $this->prefix . "limitstart.value=0; Joomla.submitform();return false;\">" . $item->text . "</a>"; } } else { return "<a title=\"" . strip_tags($item->text) . "\" href=\"" . $item->link . "\" class=\"pagenav\">" . $item->text . "</a>"; } } function pagination_item_inactive(&$item) { $app = JFactory::getApplication(); if ($app->isAdmin()) { return "<span>" . $item->text . "</span>"; } else { return "<span class=\"pagenav\">" . $item->text . "</span>"; } }