Navigazione tra articoli Joomla!
Navigazione tra articoli Joomla!
Extrowebsite

La paginazione 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. 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.

Opzioni navigazione articoli Joomla!
Opzioni navigazione articoli Joomla!

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.

Navigazione articoli Joomla!
Navigazione articoli Joomla!

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:

  1. default.php
  2. 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.