Opencart один из лучших бесплатных движков, хотя как и у любой бесплатной CMS есть минусы. Сегодня мне пришлось заниматься внутренней оптимизацией Opencart и как всегда одним из пунктов чеклиста был проверка сайта на дубли страниц. На самом деле, дублей в Opencart из коробки немало, но в этом посте я расскажу только о том как убрать дубль категории page=1 в пагинации.
Есть несколько решений "замаскировать" проблему:
- Удаление страниц из индекса — noindex,robots
- Указание основной страницы — rel="canonical"
- AJAX или Javascript прокрутка
- и для Google — rel=prev/next (Яндекс не понимает)
Я же предпочитаю устранять проблемы, а не пытаться их скрыть. Итак, начнем:
В файле system/library/pagination.php заменяем строки
$output .= '<li><a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a></li>'; $output .= '<li><a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a></li>';
на
$fpage = str_replace('&page={page}', '', $this->url); $fpage = str_replace('?page={page}', '', $fpage); $output .= '<li><a href="' . $fpage . '">' . $this->text_first . '</a></li>'; if ($page == 2) $output .= '<li><a href="' . $fpage . '">' . $this->text_prev . '</a></li>'; else $output .= '<li><a href="' . str_replace('{page}', $page-1, $this->url) . '">' . $this->text_prev . '</a></li>';
Строку
$output .= '<li><a href="' . str_replace('{page}', $i, $this->url) . '">' . $i . '</a></li>';Заменяем на код
$fpage = str_replace('&page={page}', '', $this->url); $fpage = str_replace('?page={page}', '', $fpage); if ($i == 1){ $output .= '<li><a href="' . $fpage . '">' . $i . '</a></li>'; } else{ $output .= '<li><a href="' . str_replace('{page}', $i, $this->url) . '">' . $i . '</a></li>'; }
Для того чтобы не вмешиваться в ядро и не усложнять себе жизнь лишними свистоплясками при дальнейшем обновлении версии, советую всегда пользоваться Ocmod.
Поэтому мы подготовили для Вас файл для модификатора.