Ответить Новая тема Новый опрос 
 rel canonical на страницах пагинации
Gudridge
Cпециалист
Сообщений: 115
Откуда: Москва
Регистрация: 06-07-2011


30-06-2015 18:04
Подскажите как реализовать rel canonical на страницах пагинации?
Нашёл код напросторах интернета
в controllers\front\CategoryController.php

после
Код:
"$this->assignProductList();"

вставляем:
Код:
if (Tools::getValue('p') || Tools::getValue('orderby'))
            $canonical = $this->context->link->getCategoryLink($this->category);

в
Код:
"$this->context->smarty->assign"
к примеру после
Код:
"'category' => $this->category,"

вставляем:
Код:
'canonical' => $canonical,

далее идем в themes\default-bootstrap\header.tpl
ищем
Код:
<meta name="robots" content="{if isset($nobots)}no{/if}index,{if isset($nofollow) && $nofollow}no{/if}follow" />

меняем на
Код:
{if isset($canonical) AND $canonical}
     <link rel="canonical" href="{$canonical|escape:'html':'UTF-8'}" />
     {else}
     <meta name="robots" content="{if isset($nobots)}no{/if}index,{if isset($nofollow) && $nofollow}no{/if}follow" />

но вот проблема в следующем если включить режим отладки появляется ошибка на странице категории
Notice: Undefined variable: canonical in C:\mysites\filimonia2.ru\www\controllers\front\CategoryController.php on line 99


Сообщение отредактировано Gudridge 30-06-2015 14:05 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


30-06-2015 20:26
1. Откройте файл /classes/controller/FrontController.php
после:
Код:
'cart' => $cart,

добавьте:
Код:
'canonical' => ($page_name === 'category' ? $this->context->link->getCategoryLink($this->category) : null),


2. Откройте файл /themes/тема/header.tpl и добавьте:
Код:
{if isset($canonical) && $canonical}
    <link rel="canonical" href="{$canonical|escape:'html':'UTF-8'}" />
{/if}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Gudridge
Cпециалист
Сообщений: 115
Откуда: Москва
Регистрация: 06-07-2011


08-07-2015 21:40
Благодарю
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
pavel060907
Новичок
Сообщений: 52
Регистрация: 28-04-2015


28-09-2016 12:35
Здравствуйте!

Спасибо за подробное описание! Сделал все по написанному, но почему-то не работает - информация на страницах пагинация каталога не меняется, не появляется запись, что страница ссылка на каноническую страницу. Условие в header не срабатывает...

Возможно, что адрес страницы, отличается от нужного формата (page вместо p...)
https://www.mysite.ru/106-kreditnicy-cardholder#/page-2

Помогите пожалуйста разобраться в вопросе
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
pavel060907
Новичок
Сообщений: 52
Регистрация: 28-04-2015


30-09-2016 12:46
Разобрался, но до конца не решил задачу. Решение работает на страницах без фильтра, т.е. Там, где ссылка заканчивается на p=... в случае страниц, где установлен фильтр - не работает...

Помогите пожалуйста разобраться и решить вопрос

 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
RusBolik
Новичок
Сообщений: 62
Регистрация: 28-07-2016


29-11-2016 00:25
как то решили вопрос этот?
бьюсь 3 сутки и никак
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
AK-74
Cпециалист
Сообщений: 115
Регистрация: 01-02-2016


29-11-2016 02:34
Предложенное выше решение с модификацией контроллера не может работать в модуле фильтра, потому что последний выбирает данные самостоятельно и потом заменяет фрагмент HTML кода страницы категории не перезагружая ее, поэтому для фильтров канонический УРЛ будет обеспечить весьма трудно. Надо фильтрацию переделывать полностью, встраивая ее в ядро движка.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
RusBolik
Новичок
Сообщений: 62
Регистрация: 28-07-2016


01-12-2016 21:47
хорошо.
подскажите как его сделать без учета фильтра
если можно то по пунктам.
Редирект на канонический (основной) URL выставил на 301 давно. но не работает
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос