Jump to content

hreflang 1.7


montana063

Recommended Posts

Bonjour a tous, je tente depuis un petit moment de mettre la balise google hreflang sur un site prestashop 1.7 

J'ai réussi a mettre en place sur la page index de mon site avec ce code :

 

{if $page.page_name == 'index'}
        <link rel="alternate" hreflang="fr" href="https://monsite.com/fr/"/>
        <link rel="alternate" hreflang="de" href="https://monsite.com/de/"/>
        <link rel="alternate" hreflang="en" href="https://monsite.com/en/"/>
        <link rel="alternate" hreflang="es" href="https://monsite.com/es/"/>
        <link rel="alternate" hreflang="it" href="https://monsite.com/it/"/>
        <link rel="alternate" hreflang="nl" href="https://monsite.com/nl/"/>
        <link rel="alternate" hreflang="pl" href="https://monsite.com/pl/"/>
        <link rel="alternate" hreflang="pt" href="https://monsite.com/pt/"/>
        <link rel="alternate" hreflang="ro" href="https://monsite.com/ro/"/>
{/if}

 

Le soucis maintenant c'est que je veux l'intégrer a toute mes pages produits et pages catégorie. 

 

J'ai trouvé cela sur le net ... 

{if $page_name == 'category'}
    {foreach $languages as $lang}
        {if $lang_iso != $lang.iso_code}
        <link rel="alternate" hreflang="{$lang.language_code}" href="{$link->getCategoryLink($smarty.get.id_category, null, $lang.id_lang,null,null )}/" />
        {/if}
    {/foreach}
{/if}
 
{if $page_name == 'product'}
    {foreach $languages as $lang}
        {if $lang_iso != $lang.iso_code}
        <link rel="alternate" hreflang="{$lang.language_code}" href="{$link->getProductLink($smarty.get.id_product, null, null, null, $lang.id_lang, null, 0, false)}/" />
        {/if}
    {/foreach}
{/if}
 
je sais que sur la version 1.7 de presta il faut remplacer $page_name par $page.page_name je l'ai donc fait mais cela n'as pas fonctionné
 
Ensuite je vais vous donner mon ressentit ...
 
D'après ce que j'ai vue dans les variables de mon thème il faut aussi enlever le "s" de languages car il n'existe pas avec un "S" ( ou je l'es raté )  donc j'ai remplacé {foreach $languages as $lang} par {foreach $language as $lang}  c'est donc ce que j'ai fait mais cela ne fonctionne toujours pas.
 
Et maintenant j'ai l'impression que le souci viens du href="{$link->getProductLink($smarty.get.id_product, null, null, null, $lang.id_lang, null, 0, false)} 
J'ai cherché sur le net pour trouver une solution pour avoir une url qui fonctionne sur tout les produits comme celle là sur la version 1.6 mais pour la version 1.7 de prestashop, impossible de trouver quelques chose de viable. 
 
Je ne sais pas si je m'exprime bien je suis un peu perdu, en gros si quelqu'un peu m'aider ou connais le code a mettre dans le fichier head.tpl de presta pour pouvoir intégrer la balise hreflang sur tout les produits ainsi que toutes les catégories voir même les marques et fabriquant ce serait super.
 
Merci d'avance 
 
 
Edited by montana063 (see edit history)
Link to comment
Share on other sites

Je peux éventuellement essayer d'adapter mon module hreflang pour la 1.7, car cette méthode (le code direct) dans le thème, non seulement c'est crade, mais en plus, ça ne permet pas toutes les subtilités du hreflang : si tu as un site pour la France et un autre pour les belges francophones, tu ne pourras pas le spécifier :)

Link to comment
Share on other sites

merci pour t'as réponse ^^ malheureusement je ne compte pas payer un module juste pour mettre un petit bout de code (même si j'imagine que ton module doit être top ;) ), mon site est https://monsite.com/ avec les code iso a la fin pour spécifier les pays. J'arrive a le faire pour pour les pages fixe sans souci c'est juste l'utilisation des variables pour le "if" "foreach", "href" et hreflang" qui me pose un souci. 

Mais merci encore de t'as proposition ^^

Link to comment
Share on other sites

petit up visiblement mon souci viens peut être de la balise foreach je pense, du moins sur prestashop 1.7 le tableau "languages" je ne sais même pas s'il existe je le trouve en version 1.6 mais pas 1.7, et "lang" c'est pareil je ne le trouve pas sur le 1.7 si quelqu'un sais si ses variables on changé sur presta 1.7.

Link to comment
Share on other sites

Bon alors afin de boycotte les gens qui vende leurs module pour un bout de code voici un code qui fonctionne sur prestashop 1.7 

c'est un peu de la bidouille mais ça fonctionne.

pour la page index :

{if $page.page_name == 'index'}
        <link rel="alternate" hreflang="fr" href="https://monsite/fr/"/>
        <link rel="alternate" hreflang="de" href="https://monsite/de/"/>
        <link rel="alternate" hreflang="en" href="https://monsite/en/"/>
        <link rel="alternate" hreflang="es" href="https://monsite.com/es/"/>
        <link rel="alternate" hreflang="it" href="https://monsite.com/it/"/>
        <link rel="alternate" hreflang="nl" href="https://monsite.com/nl/"/>
        <link rel="alternate" hreflang="pl" href="https://monsite.com/pl/"/>
        <link rel="alternate" hreflang="pt" href="https://monsite.com/pt/"/>
        <link rel="alternate" hreflang="ro" href="https://monsite.com/ro/"/>
{/if}

Il faut ajouter dans la balise 'href='  vos urls de votre site dans toute les langues en évitant les variables car cela n'est pas pris en charge sans boucle foreach mais vue que les boucles foreach  avec $languages as $lang ne sont pas pris en charge sur la version 1.7 on ne peut pas faire autrement. 

Pour les produits : 

{if $page.page_name == 'product'}
    {if $product.id_product_attribute != '0'}
        <link rel="alternate" hreflang="fr" href="https://monsite/fr/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>
        <link rel="alternate" hreflang="en" href="https://monsite.com/en/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>
        <link rel="alternate" hreflang="es" href="https://monsite.com/es/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>
        <link rel="alternate" hreflang="de" href="https://monsite.com/de/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>
        <link rel="alternate" hreflang="it" href="https://monsitecom/it/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>
        <link rel="alternate" hreflang="nl" href="https://monsite.com/nl/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>
        <link rel="alternate" hreflang="pl" href="https://monsite.com/pl/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>
        <link rel="alternate" hreflang="pt" href="https://monsite.com/pt/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>
        <link rel="alternate" hreflang="ro" href="https://monsite.com/ro/{$product.category}/{$product.id_product}-{$product.id_product_attribute}-{$product.link_rewrite}.html"/>   
    {/if}
    {if $product.id_product_attribute == '0'}
        <link rel="alternate" hreflang="fr" href="https://monsite.com/fr/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
        <link rel="alternate" hreflang="en" href="https://monsite.com/en/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
        <link rel="alternate" hreflang="es" href="https://monsite.com/es/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
        <link rel="alternate" hreflang="de" href="https://monsite.com/de/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
        <link rel="alternate" hreflang="it" href="https://monsite.com/it/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
        <link rel="alternate" hreflang="nl" href="https://monsite.com/nl/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
        <link rel="alternate" hreflang="pl" href="https://monsite.com/pl/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
        <link rel="alternate" hreflang="pt" href="https://monsitecom/pt/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
        <link rel="alternate" hreflang="ro" href="https://monsite.com/ro/{$product.category}/{$product.id_product}-{$product.link_rewrite}-{$product.ean13}.html"/>
    {/if}
{/if}

ATTENTION !!! le href est a faire en fonction de vos pages produit les miennes ont des code ean13 et des déclinaisons c'est pour cela que j'ai écrit le href de cette manière

Afin que GOOGLE détecte vos page produits il faut aussi que les url simplifié des catégories et des produits soit la même dans toute les langues donc il faut allez dans le back office et vérifier cela, c'est très important !!!!

Si vous n'avez pas de déclinaison la fonction  {if $product.id_product_attribute != '0'}  et   {if $product.id_product_attribute == '0'} vous permet de gérer les liens  donc pas d'inquiétude et cela vous permet d'en rajouter par la suite sans souci en revanche si vous n'avez pas de code ean13 sur la deuxième parti il faut enlever a la fin  -{$product.ean13} 

Voilà je travail sur la suite du code pour les pages catégories cms etc mais cela va rester dans le même style. 

Malheureusement a part créer un module ou faire un override dans le frontcontroler je n'ai pas trouvé d'autre solution donc encore désolé pour le code un peu crade que je vous met ;) 

Edited by montana063 (see edit history)
Link to comment
Share on other sites

Salut,

Ne le prenez pas mal svp, mais vous avez posté votre sujet dans une section de report de bugs, et mon opinion personnelle serait de déconseiller votre solution. Prenez exemple sur le fichier le module officiel blocklanguages. 95% de la solution à votre besoin est dans ce module. Au lieu de l'accrocher à displayNav, accrochez votre template à displayHeader.

  • Like 1
Link to comment
Share on other sites

Merci j'ai trouvé encore mieux en passant par un module en réutilisant quelques bout de code que j'ai retrouvé dans le frontcontroler et qui permet de retrouver les langues du site, oui la section n'est peut être pas la bonne je n'ai pas pour habitude de trop poster sur le forum ^^

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...