Вопрос по 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

Комплексное SEO продвижение в поисковых системах Яндекс, Google

Вы разберитесь, что такое 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)
Новые темыОбъявленияСвободное общение
02:29 Trastik - кто что скажет, ссылки там путёвые? 
02:28 Trastik стоит ли пробовать? 
02:21 Яндекс vs Гугл 
23:21 Ручное размещение ссылок на форумах(крауд), вечные ссылки в статьях. Большой опыт работы! 
16:57 Лучшая рекламная сеть Traffic.ru! 
16:00 CPA Kitchen - Глобальная Гемблинг Партнерка | Смартлинка, Ротатор, Постбеки | Офферы под все ГЕО 
13:18 Нужен файл роботс для вордпресс. 
23:24 Бесплатный интернет для USB модема/роутера 
22:23 Профессиональное ведение каналов в Ютубе, Белое продвижение, Услуги в соц. сетях 
18:12 PAY2DAY.TOP - Покупка и продажа криптовалюты за рубли. 
17:18 Требуется СЕО аудит сайта 
15:31 Программы для рассылок, накрутки, продвижения и ведения аккаунтов в skype, instagram, vk, ok, avito, lenta.ru 
13:43 Комплексный прогон по трастовым сайтам, статейное размещение. Рост НЧ-СЧ, Тиц-пр. 
12:53 Тексты премиум - качества! Доступные условия для бизнеса и удар по поисковым алгоритмам! 
23:33 С 23 февраля! 
22:56 Подскажите партнерки для соц. сетей 
22:43 Коронавирус 
17:49 ВК - слив данных или парсинг? 
16:22 Клещи 
10:51 Сбор семантического ядра. Key Collector. Сжатые сроки 
19:20 Кто работал с данной биржей proflinks?