Вопрос по Opencart (OcStore) 3
Страницы: 1
Вопрос по Opencart (OcStore) 3, Нужна помощь в настройке canonical на OcStore 3.0
Opencart, оно же ocstore, имеет недоработку тега canonical. Например:

Сейчас в категории выводится:
Код
<link href="https://www.сайт.ру/категория/" rel="canonical" />
[CODE]

На странице пагинации выводится:
[CODE]
<link href="https://www.сайт.ру/категория/?page=2" rel="canonical" />
 

Понятно, что слово "canonical" можно заменить на "левое ухо чебурашки". Эффект тот же, зато смешно.
Код
<link href="https://www.сайт.ру/категория/?page=2" rel="левое ухо чебурашки" />
 


Нормальная работа тега для категории https://www.сайт.ру/категория/ должна вывести:
Код
<link rel="canonical" href="https://www.сайт.ру/категория/" />
 


Нормальная работа тега на странице категории https://www.сайт.ру/категория/?page=2 выведет url родительской категории:
Код
<link rel="canonical" href="https://www.сайт.ру/категория/" />
 

Раньше закрывал страницы от индексации, но сейчас это минус. Вопрос - Как это дело поправить?

Как я понял, этот код в catalog/controller/product/category.php как раз и отвечает за вывод canonical:
Код
         $pagination = new Pagination();
         $pagination->total = $product_total;
         $pagination->page = $page;
         $pagination->limit = $limit;
         $pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');

         $data['pagination'] = $pagination->render();

         $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

         if ($page == 1) {
             $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id']), 'canonical');
         } else {
            $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical');
         }
         
         if ($page > 1) {
             $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev');
         }

         if ($limit && ceil($product_total / $limit) > $page) {
             $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), 'next');
         }
 
Изменено: Антип Замкадов - 7 Октября 2019 17:35
Вы разберитесь, что такое canonical. Если у вас на странице canonical выводится полный список товаров, тогда да.
Если нет и сделать, как вы хотите (на первую страницу), остальные страницы пагинации не зайдут в индекс.
Поэтому там все правильно сделано.
Если так уж хочется, замените:
Код
if ($page == 1) {
             $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id']), 'canonical');
         } else {
            $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical');
         }

на:
Код
$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id']), 'canonical');
Изменено: rushot - 7 Октября 2019 19:50
rushot, спасибо, но не работает.
На странице пагинации заголовок:
Код
<link href="https://www.сайт.ру/категория/?page=3" rel="canonical" />

Из него ясно, что каноническая стр. как раз /?page=3 - в этом и беда. По этому я и "предложил" заменить его на чебурашку.
Если без шуток и по-уму, тогда заголовок на page=3 должен быть таким:
Код
<link href="https://www.сайт.ру/категория/" rel="canonical" />


В этом случае страницы пагинации будут проиндексированы, но их не будет в выдаче. Но, если пс сочтёт более релевантной какую-нибудь page=3 или, к примеру, page=33, тогда в выдаче она как раз и будет вместо канонической. В этом и заключается плюс canonical.

Так что, вопрос открыт.)
Понятно.
Не сталкивался с этим движком, на joomla похож по использованию переменных. Поставлю, посмотрю.
По идее должно работать.
Поиск в файлах сайта используйте по слову "canonical". Может где-то идёт замена/подмена.
Цитата
rushot пишет:
замена/подмена
Кроме catalog/controller/product/category.php и его же в папке storage ни чего, относящегося к пагинации в категориях, не нашёл. На чистом движке, в принципе, то-же самое происходит.
Цитата
Не сталкивался с этим движком

И не приведи Господь)
Изменено: Антип Замкадов - 8 Октября 2019 13:10
Закомментировал по причине ненадобности вывод прев, некст

Код
         // if ($page > 1) {
             // $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev');
         // }

         // if ($limit && ceil($product_total / $limit) > $page) {
             // $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), 'next');
         // }
 


Заменил

Код
$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical');
 

на
Код
$this->document->addLink($this->url->link('product/category', 'path=' . $this->request->get['path'], true), 'canonical');
 

Вроде заработало на страницах категорий, страницах сортировки. 

Для производителей


после (второе вх., строка 67)

Код
$this->load->model('tool/image');
 
Вставил

Код
if (isset($this->request->get['manufacturer_id'])) {$this->document->addLink($this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id']), 'canonical');}
 
и закомментировал за ненадобностью:

Код
         // if ($page == 1) {
             // $this->document->addLink($this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'], true), 'canonical');
         // } else {
            // $this->document->addLink($this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url . '&page='. $page, true), 'canonical');
         // }
         
         // if ($page > 1) {
             // $this->document->addLink($this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url . '&page='. (($page - 2) ? '&page='. ($page - 1) : ''), true), 'prev');
         // }

         // if ($limit && ceil($product_total / $limit) > $page) {
             // $this->document->addLink($this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url . '&page='. ($page + 1), true), 'next');
         // }
 


Вот вроде как и всё.
Страницы: 1
Похожие темы:
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Новые темыОбъявленияСвободное общение
16:11 Давайте начнем обмен отзывами Google maps 
22:14 Webvork - международная товарная СРА сеть с сертифицированными офферами на Европу. 
13:03 AntiBot Cloud - бесплатный скрипт и сервис защиты сайтов 
13:04 DreamCash.tl - заработок на онлайн-видео. До 95% отчислений, отличный конверт! 
20:13 Dao.AD: Монетизация и покупка Push/Pops/Inpage и Video трафика! 
15:04 Adtrafico - Правильная партнёрская сеть под бурж трафик 
19:21 LOSPOLLOS.COM - Конвертим по рецепту Хайзенберга. Dating, Mainstream, Binary Options 
19:49 Sectormoney.com - быстрый и удобный обменник 
18:51 TELEGRAM EXPERT — Многоцелевой комбайн по работе с Telegram! 
04:17 Просто $0.04/IP 9PROXY.COM Резидентные прокси Неограниченная пропускная способность Уникальная политика замены Без чёрного списка 
02:16 BetaTransfer касса — это надежный сервис приема платежей в сфере High Risk 
21:43 Coin Click.cc - Быстрый и надежный обмен электронных валют в два клика 
15:03 Продам аккаунты 1 ТБ Облако@Mail.ru 
14:59 PlayPay.biz - Лутбоксы с товарами, играми 
23:14 Точные прогнозы на футбол 
20:09 Сколько сейчас стоит наполнение ИМ? 
12:43 Куплю проигрышные букмекерские аккаунты 
04:33 Половина скидок на распродажах — фейк 
07:53 НейроБабушка наказывает мошенников 
19:59 Осталось 3-5 месяцев до блокировки YouTube в России, — заявил Клименко 
19:57 Пятница 13-ое: VK принял радикальное решение и закрыл доступ к порно контенту