montana063 Posted May 6, 2018 Share Posted May 6, 2018 (edited) 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 May 6, 2018 by montana063 (see edit history) Link to comment Share on other sites More sharing options...
montana063 Posted May 6, 2018 Author Share Posted May 6, 2018 (edited) petit up ? ! personne ? Edited May 7, 2018 by montana063 (see edit history) Link to comment Share on other sites More sharing options...
Johann Posted May 7, 2018 Share Posted May 7, 2018 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 More sharing options...
montana063 Posted May 7, 2018 Author Share Posted May 7, 2018 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 More sharing options...
Johann Posted May 7, 2018 Share Posted May 7, 2018 Ok, pas de pb. Je viens de vérifier, j'avais d'ailleurs déjà rendu ce module compatible PS 1.7 1 Link to comment Share on other sites More sharing options...
montana063 Posted May 7, 2018 Author Share Posted May 7, 2018 Super ^^ moi je préfère essayer de faire les choses par moi même si je le peut j'aime bien apprendre et je ne lâcherai pas l'affaire donc si quelqu'un a une idée ... Link to comment Share on other sites More sharing options...
montana063 Posted May 8, 2018 Author Share Posted May 8, 2018 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 More sharing options...
montana063 Posted May 8, 2018 Author Share Posted May 8, 2018 Je suis le seul a vouloir faire cela on dirais ... Link to comment Share on other sites More sharing options...
montana063 Posted May 9, 2018 Author Share Posted May 9, 2018 (edited) je m'auto parle c'est super, j'avance a pas de fourmi mais je me demande quand j'aurai la solution si je vais donner la réponse sur le forum francophone de presta vue l'aide que j'obtiens ... Edited May 9, 2018 by montana063 (see edit history) Link to comment Share on other sites More sharing options...
montana063 Posted May 9, 2018 Author Share Posted May 9, 2018 Bon ben solution trouvé, merci a tous ceux qui ne m'ont pas aidé et vive la solidarité !!! Link to comment Share on other sites More sharing options...
montana063 Posted May 10, 2018 Author Share Posted May 10, 2018 (edited) 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 May 10, 2018 by montana063 (see edit history) Link to comment Share on other sites More sharing options...
GuillaumeCW Posted May 10, 2018 Share Posted May 10, 2018 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. 1 Link to comment Share on other sites More sharing options...
GuillaumeCW Posted May 10, 2018 Share Posted May 10, 2018 Sa version 1.7 vous sera plus utile : https://github.com/PrestaShop/ps_languageselector 1 Link to comment Share on other sites More sharing options...
montana063 Posted May 10, 2018 Author Share Posted May 10, 2018 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now