Вопрос по 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)
Новые темыОбъявленияСвободное общение
21:39 Подскажите где продвигать сайт. 
10:57 3snet - гемблинг, беттинг, форекс, бинарные опционы, майнинг 
19:12 Мошенники-копирайтеры 
08:57 Индексация страниц 
23:16 Есть ли альтернатива Адсенсу и РСЯ? 
20:48 Dao.AD: Монетизация и покупка Push/Pops/Inpage и Video трафика! 
18:53 Настройка плагина для wordpress Price Shop 
10:05 BIGPROXY.SHOP - Резидентные Ротационные Backconnect Proxy USA EUROPA MIX [Безлимитный трафик] 
09:54 WebKazna. Обмены криптовалют. Доставка наличных. 
09:08 SpaceSwap.cc - Быстрый и надежный обменник криптовалют 
02:27 Продам обменник криптовалюты, а также новый обменник под ключ с обучением. Скидки на скрипты обменника 
20:47 A-Parser 1.1 - продвинутый парсер поисковых систем, Suggest, PR, DMOZ, Whois, etc 
20:07 Belurk — высокоскоростные анонимные прокси от 0,24 рублей 
18:53 Volna.money 
22:31 Точные прогнозы на футбол 
20:32 Ням-ням! - 8 деликатесов, которые когда-то ели только бедные люди 
09:37 Договорные матчи от ИИ 
20:29 SMM-24.com САМЫЙ ДЕШЕВЫЙ SMM - Накрутка от 0.0001$|TG/TG PREMIUM/YT/TWIT/IG/TT/FB 
08:32 Бесплатный SEO аудит. 
20:52 Что сейчас топ по монетизации? Видео-темы или что-то поинтереснее? 
21:55 Хром ругается на форум