Настройка Фильтра Языка в Joomla! - большая

Иногда встречаются вебсайты, где щелчок на флажке требуемого языка перевода страницы неожиданно переносит посетителя, например, на главную страницу, или оставляет на текущей. Вероятно нужная страница отсутствует, а веб-дизайнер просто не позаботился уведомить об этом. Современная Joomla обладает широкими возможностями поддержки многоязычности в подобных случаях, но есть нюансы.

Генерация атрибута "hreflang"

Допустим описатель меню выглядит следующим образом:

JustOneLangSupported

Вы показываете или скрываете Модуль Переключателя Языка на соответствующих страницах и, настроив плагин Фильтра Языка, например, как на рисунке в начале статьи, получаете в подарок автоматическое улучшение SEO, т.к. Joomla атоматически добавит соответствующую информацию в заголовок страницы:

hreflang OK
Однако, этого не происходит в упомянутом выше случае отсутствия страниц перевода, даже не зависимо от того, разрешаете вы в настройках Фильтра Языка добавление тега "x-default", или показ флага Активного Языка в модуле Переключателя Языка (версия Joomla 3.9.1):

hreflang absent

Вероятно разработчики предполагали, что должны присутствовать переводы для всех объявленных языков, либо на худой конец, пустые страницы со стандартными извинениями. Но, если документов много, то вы потратите немало времени на назначение бессмысленных ассоциаций и т.д. Я не стал расширять соответствующий системный плагин по стандартной методике, а просто добавил две строчки в функцию 'onAfterDispatch()' файла '/plugins/system/languagefilter/languagefilter.php' (см.код, начиная со строки 826):

PatchCode
Теперь порядок:

hreflang restored

Неожиданный редирект 301

Старайтесь избегать линков из многоязычных страниц на страницы, не имеющие перевода. На следующем скриншоте результатов работы программы ScreamingFrog вы видите пример редиректов 301, порождаемых такой ссылкой:

Redirect 301

Скоро Joomla! будет обновляться и может быть в версии 4.0 эта проблема будет решена. Поисковики не приветствуют редиректы 301 и вы можете либо удалить подобные ссылки, либо запастись терпением и повторить следующие шаги для каждой страницы:

  • Создать Категорию статьи и назначить языковые ассоциации
  • Создать статью и назначить языковые ассоциации
  • Создать пункт меню, подключить к нему статью
  • Отметить показ модуля 'Language Switcher' для данной статьи
  • Разрешить вывод главного меню (Top) при показе данной статьи
  • Создать модуль меню (боковое), для выбора из группы статей данной категории
  • Подключить статью к модулю и назначить языковые ассоциации
  • Скорректировать линки на данную статью

Примечание: не забывайте принудительно сканировать Категории и Меню после обновления (нажмите копку Build). Из собственного очень давнего негативного опыта предполагаю, что эта кнопка добавлена потому, что Joomla! хранит важные настройки в JSON-структурах полей типа 'mediumtext' Базы Данных.

На следующей картинке представлена страница объявления отсутствующего перевода материала:

Sorry page
Проверим результат наших трудов:

StillErr

Список редиректов несколько изменился, но они не исчезли! Запретим удаление кода Языка по-умолчанию из URL:

LanguageFilterPlugin

Надеюсь вышеизложенный материал вам пригодится.