How to set up rel = & quot; canonical & quot; for a Prestashop site?

  • 0
    Website Arthata.by on cms Prestashop 1.5
    Task: to register rel = "canonical" tags for pages.

    Implemented with code in 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}


    Everything works except for one little thing. Website with SSL and links of all kinds https
    But for some reason this code generates rel = "canonical" with a link like http

    & lt; link rel = "canonical" href = "http://arthata.by/" & gt;
    How to fix?
    JavaScript Anonymous, Jan 10, 2020

  • 1 Answers
  • 0
    I would look at the code of the functions getCategoryLink, getProductLink and others. They do not handle SSL work correctly.
    Anonymous

Your Answer
To place the code, please use CodePen or similar tool. Thanks you!