Вопрос по 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)
Новые темыОбъявленияСвободное общение
17:55 Dao.AD: Монетизация и покупка Push/Pops/Inpage и Video трафика! 
17:04 Webvork - международная товарная СРА сеть с сертифицированными офферами на Европу. 
15:43 Adtrafico - Правильная партнёрская сеть под бурж трафик 
12:50 Партнерская программа OWNR WALLET 
01:46 Настроить поставщиков в программе E-Trade PriceList Importer 
15:26 Найти элемент в коде 
11:51 Bropush - твой бро в монетизации сайта push-уведомлениями 
18:17 Восстановление сайтов из Вебархива на Wordpress 
17:59 Мобильные и Резидентные Прокси Для Соц Сетей | 3 Гб Бесплатно 
16:46 Ural-obmen.ru — выгодный сервис обмена 
16:40 Obama.ru - безопасный обмен криптовалют и электронных денежных средств 
13:54 Coin Click.cc - Быстрый и надежный обмен электронных валют в два клика 
11:40 Высококачественные и надежные прокси-серверы и 5G 
11:37 Google Voice - OLD аккаунты "SMS и звонки" 
20:16 Точные прогнозы на футбол 
19:49 Видимо, похороны СУПРа уже прошли как-то по-тихому 
12:48 Каспкрски ОС 
11:21 Ням-ням! - 8 деликатесов, которые когда-то ели только бедные люди 
14:41 Бесплатный мини-аудит юзабилити и конверсии + технический SEO-аудит в подарок 
15:24 Добро пожаловать в цифровой мир... 
22:58 У меня дикая просадка по РСЯ за последние 3 суток