La navigazione tra gli articoli di Joomla!, o tra gli articoli appartenenti ad una categoria, ha rappresentato spesso un problema per quanto riguarda lo scorrere con i pulsanti "Prossimo" e "Successivo", quando si vuol passare da un articolo all'altro. Vediamo come modificarla.
Attivare la navigazione tra gli articoli
Per prima cosa, si deve attivare la navigazione dalle opzioni degli articoli. Entrare come amministratore di Joomla! e portarsi al menu orizzontale.
Selezionare Contenuti ⇒ Articoli. Nella pagina della lista articoli, premere il pulsante Opzioni posto all'estrema destra.
Scorrere verso il basso e nel secondo gruppo di Opzioni, selezionare Mostra in corrispondenza di Navigazione. Così facendo, apparirà il link di navigazione (Prossimo, Precedente) tra gli articoli. Salvare e chiudere.

Il concetto della navigazione tra articoli
Si crei una categoria e si scriva qualche articolo di esempio. Creare anche una voce di menu, assegnandole Articoli ⇒ Categoria blog quale Tipo di voce di menu.
Tra le impostazioni del pannello di controllo si selezioni Prima gli articoli più recenti, per quanto riguarda la voce di menu.
Una volta pubblicato il tutto, si vada a leggere il primo articolo che appare nella Categoria Blog (in realtà è l'ultimo che abbiamo scritto), premendo il pulsante "Leggi tutto" per leggere l'articolo completo. Ai piedi dell'articolo troviamo il pulsante di navigazione.

Come possiamo vedere nell'immagine qui su, la paginazione sembra che scorra al "contrario". L'immagine mostra il pulsante Avanti ma avremmo dovuto avere il pulsante Precedente oppure Indietro in quanto dovremmo andare al penultimo articolo e così via. Esempio:
- ID Articolo 100 (Ultimo Articolo Creato)
- ID Articolo 99
- ID Articolo 98
- .....
Poniamo il caso che si stia leggendo l'articolo con ID=100. Se volessimo leggere l'articolo precedente, la paginazione di Joomla! ci prospetta il link Avanti, al posto di Precedente.
Effettivamente va a richiamare l'ID=99. Però credo ci sia una discrasia tra il link e l'ID. Perchè appare Avanti, se sto leggendo l'ultimo articolo? Sarebbe più corretto che apparisse il link "Precedente". Non è un rompicapo, ma succede questo. Qualcosa non torna.
Forse non abbiamo fatto caso a questa modalità di navigare tra gli articoli, perchè lo facciamo in automatico. Personalmente non la trovo molto corretta. Vediamo come poter risolvere il tutto.
Individuare i files del core di Joomla!
Al momento della scrittura dell'articolo in oggetto, la versione di Joomla! è la 3.6.4
I files da modificare sono 2:
default.php
pagenavigation.php
Il percorso del primo è:
/plugins/content/pagenavigation/tmpl/default.php
Il percorso del secondo è:
/plugins/content/pagenavigation/pagenavigation.php
Portare entrambi i files sul desktop con un programma FTP.
Fare una copia dei files in oggetto, onde evitare problemi al CMS.
Modificare il file default.php
Aprire il file con un editor di testo (Notepad ++ va benissimo) ed individuare il seguente codice:
<ul class="pager pagenav">
<?php if ($row->prev) :
$direction = $lang->isRtl() ? 'right' : 'left'; ?>
<li class="previous">
<a href="/<?php echo $row->prev; ?>" rel="prev">
<?php echo '<span class="icon-chevron-' . $direction . '"></span> ' . $row->prev_label; ?>
</a>
</li>
<?php endif; ?>
<?php if ($row->next) :
$direction = $lang->isRtl() ? 'left' : 'right'; ?>
<li class="next">
<a href="/<?php echo $row->next; ?>" rel="next">
<?php echo $row->next_label . ' <span class="icon-chevron-' . $direction . '"></span>'; ?>
</a>
</li>
<?php endif; ?>
</ul>
Va cambiato con il seguente:
<ul class="pager pagenav">
<?php if ($row->prev) :
$direction = $lang->isRtl() ? 'right' : 'left'; ?>
<li class="next">
<a href="/<?php echo $row->prev; ?>" rel="next"><?php echo $row->prev_label . '<span class="icon-chevron-right"></span> '; ?></a>
</li>
<?php endif; ?>
<?php if ($row->next) :
$direction = $lang->isRtl() ? 'left' : 'right'; ?>
<li class="previous">
<a href="/<?php echo $row->next; ?>" rel="prev"><?php echo '<span class="icon-chevron-left"></span>' . $row->next_label; ?></a>
</li>
<?php endif; ?>
</ul>
Salvare e chiudere il file. Riportarlo nella cartella di appartenenza sul server.
Modificare il file pagenavigation.php
Aprire il file con un editor di testo ed individuare, indicativamente al rigo 181, il seguente codice:
if ($row->prev) { $row->prev_label = ($this->params->get('display', 0) == 0) ? JText::_('JPREV') : $row->prev->title; $row->prev = JRoute::_(ContentHelperRoute::getArticleRoute($row->prev->slug, $row->prev->catid, $row->prev->language)); } else { $row->prev_label = ''; $row->prev = ''; }
cambiarlo con:
if ($row->prev) { $row->prev_label = ($this->params->get('display', 0) == 0) ? JText::_('JNEXT') : $row->prev->title; $row->prev = JRoute::_(ContentHelperRoute::getArticleRoute($row->prev->slug, $row->prev->catid, $row->prev->language)); } else { $row->prev_label = ''; $row->prev = ''; }
Sempre nel file pagenavigation.php
, portarsi al rigo 192 ed individuare il codice
if ($row->next) { $row->next_label = ($this->params->get('display', 0) == 0) ? JText::_('JNEXT') : $row->next->title; $row->next = JRoute::_(ContentHelperRoute::getArticleRoute($row->next->slug, $row->next->catid, $row->next->language)); } else { $row->next_label = ''; $row->next = ''; }
cambiarlo con:
if ($row->next) { $row->next_label = ($this->params->get('display', 0) == 0) ? JText::_('JPREV') : $row->next->title; $row->next = JRoute::_(ContentHelperRoute::getArticleRoute($row->next->slug, $row->next->catid, $row->next->language)); } else { $row->next_label = ''; $row->next = ''; }
salvare il tutto e riportare il file sul server.
Conclusioni
Adesso la navigazione tra articoli ha una corrispondenza nettamente più adeguata tra i pulsanti e gli articoli. Si ribadisce il concetto che è sempre bene fare una copia dei files originali sui quali sono state apportate modifiche. In qualsiasi momento si possono portare sul server ed il tutto torna allo stato iniziale.