Атрибут hreflang для мультиязычных сайтов

Итак, у нас есть мультиязычный сайт, использующий Fenom и Babel. Нам нужно правильно прописать атрибут «hreflang» для правильного распознавания локализованной версии страницы поисковиками типа Google и Яндекс. Заодно сделаем это в связке с «canonical» Подробнее о hreflang можно прочитать в доках от Google.

Приступим к реализации

Используем вариант указания языковой версии в теге head. Этот вариант идеально подходит для сайтов, у которых меньше 10 языков. Если больше, то более оптимально будет указать локальные версии в sitemap.xml

Открываем чанк с head и вписываем следующий код:

<link rel="canonical" href="{$_modx->resource.id|url:['scheme' => 'full']}" />
{set $babel = $_modx->resource.id|resource:'babelLanguageLinks'}
{if $babel}
    {set $ctx_explode = $babel|split:';'}
    {foreach $ctx_explode as $ctx_res}
        {set $res_explode = $ctx_res|split:':'}
        {set $resourceId = intval($res_explode.1) }
        {if $res_explode.0 == 'web'}{set $cultureKey = 'nl'}
        {elseif $res_explode.0 == 'en'}{set $cultureKey = 'en'}{/if}
        {if $resourceId}
            {set $arr[$cultureKey] = $resourceId} {* забиваем языки в массив *}
        {/if}
    {/foreach}
{/if}
{* выводим языки перебором *}
{foreach $arr as $key => $value}
{if $key == 'nl'}
{* тут указываем языковую версию по умолчанию *}
<link rel="alternate" hreflang="x-default" href="{$value|url:['scheme' => 'full']}" />
{/if}
<link rel="alternate" hreflang="{$key}" href="{$value|url:['scheme' => 'full']}" />
{/foreach}

Выглядит это следующим образом:

Атрибут hreflang в теге head

Вот и всё.  Советую использовать этот код для всех мультиязычных сайтов на MODX. 

16 ноября 2018, 03:39
36

Администратор в BazMaster Studio. Люблю создовать сайты на MODX и постоянно в нём совершенствуюсь.




Комментарии ()