По современным требованиям к поисковой оптимизации сайта необходимо оптимизировать систему пагинации Joomla.

Для корректного поиска в многостраничных документах в секции Head страниц многостраничного документа надо добавить следующие теги.

На 1-й странице тег

<link rel="prev" href="/url_адрес_второй_страницы_пагинации">

Но остальных, кроме последней.

<link rel="prev" href="/url_адрес_предыдущей_страницы">
<link rel="next" href="/url_адрес_следующей_страницы">
<link rel="canonical" href="/url_адрес_основной_страницы">

На последней странице последовательности:

<link rel="prev" href="/url_адрес_предыдущей_страницы">
<link rel="canonical" href="/url_адрес_основной_страницы">

На сайте с Joomla необходимо добавить теги rel="prev", rel="next" и rel="canonical" на страницах с пагинацией, а так же безопасно удалить '?limitstart=0' из ссылок:

Для того чтобы добавить на страницах сайта теги rel="next" и rel="prev" достаточно модифицировать функцию pagination_list_render в файле pagination.php.

Для этого у вас в шаблоне должен быть переопределенный файл pagination.php, который будет находиться по пути:

[корень сайта]/templates/[ваш шаблон]/html/pagination.php

В этом файле должна быть функция которая выглядит примерно вот так (ну как минимум название функции совпадает):

function pagination_list_render($list)
{
    $html = array();

    $html[] = '<ul>';
    $html[] = '<li class="pagination-start">' . $list['start']['data'] . '</li>';
    $html[] = '<li class="pagination-prev">' . $list['previous']['data'] . '</li>';

    foreach ($list['pages'] as $page) {
        $html[] = '<li class="number">' . $page['data'] . '</li>';
    }

    $html[] = '<li class="pagination-next">' . $list['next']['data'] . '</li>';
    $html[] = '<li class="pagination-end">' . $list['end']['data'] . '</li>';
    $html[] = '</ul>';

    return implode("\n ", $html);
}

Весь этот участок кода нужно заменить на код представленный ниже:

function pagination_list_render($list){
	$doc = JFactory::getDocument();
	// Calculate to display range of pages
	$currentPage = 1;
	$range = 1;
	$step = 5;
	foreach ($list['pages'] as $k => $page)
	{
		if (!$page['active'])
		{
			$currentPage = $k;
		}
	}
	if ($currentPage >= $step)
	{
		if ($currentPage % $step == 0)
		{
			$range = ceil($currentPage / $step) + 1;
		}
		else
		{
			$range = ceil($currentPage / $step);
		}
	}

	$html .= '<ul>';
        $html .= '<li class="pagination-start">' . str_replace('?limitstart=0', '', $list['start']['data']) . '</li>';
        $html .= '<li class="pagination-prev">' . str_replace('?limitstart=0', '', $list['previous']['data']) . '</li>';

	$prev_href = null;

	preg_match('#(href=").*?(")#', $list['previous']['data'], $prev_a);

	if (count($prev_a) > 0) {
		$prev_href = str_replace(array('href="/','"'), "", $prev_a[0]);
	}
	//var_dump(JURI::base().$prev_href);


	if(isset($prev_href)) {
		$doc->addCustomTag('<link rel="prev" href="'.JURI::base().$prev_href.'">');
	}

	foreach ($list['pages'] as $k => $page)
	{
		if (in_array($k, range($range * $step - ($step + 1), $range * $step)))
		{
			if (($k % $step == 0 || $k == $range * $step - ($step + 1)) && $k != $currentPage && $k != $range * $step - $step)
			{
				$page['data'] = preg_replace('#(<a.*?>).*?(</a>)#', '$1...$2', $page['data']);
			}
		}
		
		$html .= '<li class="number">' . str_replace('?limitstart=0', '', $page['data']) . '</li>';
		
	}

	$html .= '<li class="pagination-next">' . $list['next']['data'] . '</li>';

	$next_href = null;

	preg_match('#(href=").*?(")#', $list['next']['data'], $next_a);

	if (count($next_a) > 0) {
		$next_href = str_replace(array('href="/','"'), "", $next_a[0]);
	}
	//var_dump(JURI::base().$prev_href);


	if(isset($next_href)) {
		$doc->addCustomTag('<link rel="next" href="'.JURI::base().$next_href.'">');
	}

        $html .= '<li class="pagination-end">' . $list['end']['data'] . '</li>';
        $html .= '</ul>';
	return $html;
}

В результате в теге <head> нашего сайта на страницах с пагинацией  у нас автоматически будут добавляться необходимые нам теги rel="next" и rel="prev" вместе с ссылками на соответствующие страницы.

Приведенный выше код так же решает проблему удаления пресловутого '?limitstart=0' из ссылок, ведущих на первую страницу пагинации: "start", "prev", "1"