Override della paginazione di Joomla
Continuiamo a parlare di override per mostrare un’altra possibilità offerta da Joomla. Come sappiamo, quando sono presenti molti articoli Joomla mostra in fondo alla pagina uno strumento che permette di suddividere gli articoli su molte pagine e navigare tra di esse con facilità, la paginazione.
Se all’interno del template, nella cartella html, creiamo un file chiamato pagination.php, possiamo personalizzare il modo in cui viene gestita la paginazione.
Vediamo ad esempio come la gestisce il template rhuk_milkyway:
function pagination_list_footer($list) { $html = " <div class="\"list-footer\"">\n"; $html .= "\n <div class="\"limit\"">".JText::_('Display Num').$list['limitfield']."</div> "; $html .= $list['pageslinks']; $html .= "\n <div class="\"counter\"">".$list['pagescounter']."</div> "; $html .= "\n <input name="\"limitstart\"" type="\"hidden\"" value="\"".$list['limitstart']."\"" />"; $html .= "\n</div> "; return $html; } function pagination_list_render($list) { // Initialize variables $html = "<span class="\"pagination\"">"; $html .= '<span>«</span>'.$list['start']['data']; $html .= $list['previous']['data']; foreach( $list['pages'] as $page ) { if($page['data']['active']) { $html .= '<strong>'; } $html .= $page['data']; if($page['data']['active']) { $html .= '</strong>'; } } $html .= $list['next']['data']; $html .= $list['end']['data']; $html .= '<span>»</span>'; $html .= "</span>"; return $html; } function pagination_item_active(&$item) { return "<a href="\">link."\" title=\"".$item->text."\">".$item->text."</a>"; } function pagination_item_inactive(&$item) { return "<span>".$item->text."</span>"; }
Quattro funzioni definiscono completamente come deve essere gestita la paginazione:
• pagination_list_footer: mostra la form che permette di scegliere quanti elementi mostrare per pagina
• pagination_list_render: mostra la paginazione, con tanto di link “Inizio”, “Prec.”, “Succ.”, “Fine”.
• pagination_item_active: prepara e mostra il collegamento alle pagine precedenti e successive alla corrente.
• pagination_item_inactive: mostra il riferimento alla pagina corrente, solitamente senza link.
Vediamo ad esempio come è scritto il pagination override del template Beez:
function pagination_list_footer($list) { // Initialize variables $lang =& JFactory::getLanguage(); $html = " <div class="\"list-footer\"">\n"; $html .= "\n <div class="\"limit\"">".JText::_('Display Num').$list['limitfield']."</div> "; $html .= $list['pageslinks']; $html .= "\n <div class="\"counter\"">".$list['pagescounter']."</div> "; $html .= "\n <input name="\"limitstart\"" type="\"hidden\"" value="\"".$list['limitstart']."\"" />"; $html .= "\n</div> "; return $html; } function pagination_list_render($list) { // Initialize variables $lang =& JFactory::getLanguage(); $html = " <ul class="\"pagination\"">"; $html .= $list['start']['data']; $html .= $list['previous']['data']; foreach( $list['pages'] as $page ) { if($page['data']['active']) { // $html .= '<strong>'; } $html .= $page['data']; if($page['data']['active']) { // $html .= '</strong>'; } } $html .= $list['next']['data']; $html .= $list['end']['data']; // $html .= '«'; $html .= "</ul> "; return $html; } function pagination_item_active(&$item) { return " <li><strong><a href="\">link."\" title=\"".$item->text."\">".$item->text."</a></strong></li> "; } function pagination_item_inactive(&$item) { return " <li>".$item->text."</li> "; }
