Localizator. Атрибут hreflang для мультиязычных сайтов
У нас есть мультиязычный сайт, построенный на Fenom и Localizator. Нам нужно прописать атрибут «hreflang» для правильного распознавания локализованной версии страницы поисковиками типа Google и Яндекс.
Используем вариант указания языковых версии в head. Этот вариант подходит для сайтов, у которых языков меньше 10 штук. Если больше, то оптимально будет указать локальные версии в sitemap.xml.
Совместно с @Евгений Webinmd накидали сниппет hreflangs, а потом его еще улучшил @Alex =).
<?php
$output = "";
$default = "ua";
$id = $modx->resource->get('id');
$start = $modx->getOption('site_start');
$protocol = $modx->getOption('server_protocol').'://';
$pdoTools = $modx->getService('pdoFetch');
$resources = $pdoTools->getCollection('localizatorLanguage',['active' => 1], [
'sortby' => 'id',
'sortdir' => 'asc',
]);
if($resources) {
foreach($resources as $resource) {
$key = $resource['key'];
if($id != $start) {
$url = $resource['http_host'].$modx->makeUrl($id);
} else {
$url = $resource['http_host'];
}
if($key == $default) {
$output .= "<link rel='alternate' hreflang='x-default' href='{$protocol}{$resource['http_host']}' />";
}
$output .= "<link rel='alternate' hreflang='{$key}' href='{$protocol}{$url}'>";
}
}
return $output;
Вызываем в head:
{'!hreflangs' | snippet : []}
Результат
<link rel="alternate" hreflang="ru" href="https://site.com/ru/">
<link rel="alternate" hreflang="uk" href="https://site.com/">
<link rel="alternate" hreflang="en" href="https://site.com/en/">
<link rel="alternate" hreflang="x-default" href="https://site.com/">
Пользуйтесь на здоровье! В документацию информацию добавил.
Поблагодарить автора
Отправить деньги
Комментарии: 2
Мне кажется шаблон вывода стоит вынести в отдельный параметр tpl
Нехорошо разметку посреди кода пихать.
Нехорошо разметку посреди кода пихать.
if($key == $default) {
$output .= "<link rel='alternate' hreflang='x-default' href='{$protocol}{$resource['http_host']}' />";
}
Здесь наверное нужен continue;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.