Как настроить rel="canonical" для сайта на Prestashop?

Сайт Arthata.by на cms Prestashop 1.5
Задача: прописать для страниц теги rel="canonical"

Реализовал с помощью кода в header.tpl:
{if $page_name == 'category'}
		<link rel="canonical" href="{$link->getCategoryLink($smarty.get.id_category, null, $id_lang,null,null )}" />    
		{if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getCategoryLink($smarty.get.id_category, null, $lang.id_lang,null,null )}" />{/foreach}{/if}
		{if $start!=$stop}{if $p != 1 && $p_previous != 1}{assign var='p_previous' value=$p-1}
		<link rel="prev" href="{$link->getCategoryLink($smarty.get.id_category, null, $id_lang,null,null )}{$link->goPage($requestPage, $p_previous)}" />{/if}
		{if $pages_nb > 1 AND $p != $pages_nb}{assign var='p_next' value=$p+1}
		<link rel="next" href="{$link->getCategoryLink($smarty.get.id_category, null, $id_lang,null,null )}{$link->goPage($requestPage, $p_next)}" />{/if}{/if}
		{/if}
		{if $page_name == 'product'}    
		<link rel="canonical" href="{$link->getProductLink($smarty.get.id_product, null, null, null, $id_lang, null, 0, false)}" />    
		{if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getProductLink($smarty.get.id_product, null, null, null, $lang.id_lang, null, 0, false)}" />{/foreach}{/if} 
		{/if}
		{if $page_name == 'cms' && $smarty.get.id_cms > 0}
		<link rel="canonical" href="{$link->getCMSLink($smarty.get.id_cms, null, false, $id_lang)}" />
		{if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getCMSLink($smarty.get.id_cms, null, false, $lang.id_lang)}" />{/foreach}{/if}
		{/if}
		{if $page_name == 'manufacturer' && $smarty.get.id_manufacturer > 0}
		<link rel="canonical" href="{$link->getManufacturerLink($smarty.get.id_manufacturer, null, $id_lang)}" />    
		{if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getManufacturerLink($smarty.get.id_manufacturer, null, $lang.id_lang)}" />{/foreach}{/if}
		{/if}
		{if $page_name == 'manufacturer' && !isset($smarty.get.id_manufacturer)}
		<link rel="canonical" href="{$link->getPageLink('manufacturer', 'true', $id_lang)}" />    
		{if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getPageLink('manufacturer', 'true', $lang.id_lang)}" />{/foreach}{/if}
		{/if}
		{if $page_name == 'index'}
		<link rel="canonical" href="{$link->getPageLink('index', 'true', $id_lang)}" />    
		{if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getPageLink('index', 'true', $lang.id_lang)}" />{/foreach}{/if}
		{/if}


Все работает за исключением одной мелочи. Сайт с SSL и ссылки все вида https
Но почему-то этот код генерирует rel="canonical" с ссылкой вида http

<link rel="canonical" href="http://arthata.by/">
Как исправить?
  • Вопрос задан
  • 402 просмотра
Пригласить эксперта
Ответы на вопрос 2
@ITLandgraf
vk.com/digital_workroom
Я бы посмотрел код функций getCategoryLink, getProductLink и других. Они некорректно обрабатывают работу с SSL.
Ответ написан
Комментировать
@Stroy-St
Привет!
Сайт Stroy-St.Ru на cms Prestashop 1.6.1.24
Вставил этот код в header.tpl своего сайта. Сайт с SSL.
Главная страница сайта, страницы производителей, страницы категорий товаров и страницы самих товаров получили rel="canonical" с ссылкой вида https. Отлично!
Но страницы CMS "мой сайт/content/моя страница" получили rel="canonical" с ссылкой вида http.
В результате проб и ошибок, правки кода в разных файлах, методом "тыка"- исправил эту ошибку таким вот способом:
В строке вашего кода
<link rel="canonical" href="{$link->getCMSLink($smarty.get.id_cms, null, false, $id_lang)}" />

Заменил false на true
<link rel="canonical" href="{$link->getCMSLink($smarty.get.id_cms, null, true, $id_lang)}" />


И ссылки на страницах CMS получили rel="canonical" вида https.

Как, Вы, думайте, так правильно?

И ещё вопрос другие страницы, такие как:

мой сайт/content/category/моя страница
https://stroy-st.ru/feedback
https://stroy-st.ru/sitemap
https://stroy-st.ru/maps
https://stroy-st.ru/new-products
Страницы модулей и многие другие

Вообще не получили ссылку rel="canonical"

Подскажите пожалуйста, как сгенерировать код и для этих страниц.
Спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы