Нашлось готовое решение для использования атрибутов rel="next" и rel="prev", решающее проблему дублей страниц категории. Изменяется файл /system/library/pagination.php Это:
public $style_results = 'results';
public function render() {
...
}
Заменить на:
public $style_results = 'results';
public $next = null;
public $prev = null;
public function render() {
...
}
Это:
if ($page > 1) {
$output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> ';
}
Заменить на:
if ($page > 1) {
$output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> ';
$this->prev = str_replace('{page}', $page - 1, $this->url);
}
Это:
if ($page < $num_pages) {
$output .= ' <a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a> <a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a> ';
}
Заменить на:
if ($page < $num_pages) {
$output .= ' <a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a> <a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a> ';
$this->next = str_replace('{page}', $page + 1, $this->url);
}
И в конце файла это:
}
}
?>
Заменить на:
}
public function getNext() {
return $this->next;
}
public function getPrev() {
return $this->prev;
}
}
?>
После чего во всех контроллерах вывода пагинации /catalog/controller/product/category.php, /catalog/controller/product/search.php, /catalog/controller/product/manufacturer.php, /catalog/controller/product/special.php Это:
$this->data['pagination'] = $pagination->render();
Заменить на:
$this->data['pagination'] = $pagination->render();
if ($pagination->getNext()) {
$this->document->addLink($pagination->getNext(), 'next');
}
if ($pagination->getPrev()) {
$this->document->addLink($pagination->getPrev(), 'prev');
}
В результате, посмотрев код 2-й страницы категории (ну и всех других тоже), можно будет увидеть в хед-секции нужные гуглу нам атрибуты: <link href="http://site.ru/category?page=3" rel="next" /> <link href="http://site.ru/category?page=1" rel="prev" /> Решение нашлось тут.