Мультиязычность

вот такой еще неприятный момент от гугл вебмастера:
На сайте неправильно используется атрибут hreflang

Веб-мастеру сайта Для просмотра ссылки Войди или Зарегистрируйся..

На некоторых страницах Вашего сайта неправильно реализованы атрибуты rel и hreflang. Скорее всего, неверно указаны языковые коды или регионы либо отсутствуют обратные ссылки (если страница А ссылается на страницу Б, то вторая страница должна содержать обратную ссылку на первую). Атрибут hreflang используется для показа результатов Google Поиска на подходящем языке и с правильным региональным URL.

Пока проблемы не будут устранены, Вы не сможете настроить таргетинг на языки или на регионы.

Я об этом писал выше. Исправляется путём добавления в header.tpl :)

Код:
    {if $page_name == 'category'}
        {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 $page_name == 'product'}
        {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 $page_name == 'cms'}
        {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 $page_name == 'manufacturer'}
        {foreach $languages as $lang}       
            <link rel="alternate" hreflang="{$lang.language_code}" href="{$link->getManufacturerLink($smarty.get.id_manufacturer, null, $lang.id_lang , null)}"/>
        {/foreach}
    {/if}
    {if $page_name == 'contact'}
        {foreach $languages as $lang}       
            <link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getPageLink(contact, null, $lang.id_lang, null, null, null)}"/>       
        {/foreach}
    {/if}

    {assign var=minus_to_trim value="/-"}

    {if $page_name == 'index'}
        {foreach $languages as $lang}
            <link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getCategoryLink($smarty.get.id_category, null, $lang.id_lang,null,null )|replace:$minus_to_trim:''|escape:'html':'UTF-8'}"/>       
        {/foreach}
    {/if}
 
У меня такая проблема. В магазине 2 языка. Один в принципе не нужен, но если его убрать, начинается проблема с переводом товаров. Возможно ли сделать так, чтобы в БО было 2 языка, а на сайте один, но не тот что стоит как основной? Prestashop 1.7.1.1
 
взять в Link.php функцию getLangLink и заменть в своём файлt classes/Link.php
взять Tools.php и закинуть в override/classes/

очистить cache и обязательно class_index.php

Всё :)
Попробовал ваш вариант для престы 1.7.3 - работает. Спасибо! Тоже стал вопрос а стоит для инет - магазина работающего только в Украине - два языка ( русский и украинский). Но все таки крупный маг. Розетка использует два языка. Сеошники пишут, что есть смысл, увеличивается конверсия. Если небольшой маг. можно перевод сделать более качественнее дабы минимизировать дубляж. Склоняюсь в сторону - попробовать.
 
Назад
Сверху