Skip to content
  1. Компоненты
  2. Localizator3
  3. Переключение языков

Переключение языков ​

Сниппет getLanguageList отдаёт список языков на витрине. Без сервиса pdoFetch сниппет не выполняется.

Чанки languages.tpl и languages.dropdown.tpl входят в пакет.

Имя getLocales из старых примеров Localizator для MODX 2 не регистрируется.

Параметры getLanguageList ​

НазваниеПо умолчаниюОписание
outputModelistlist или dropdown
showActiveДаМеняет только CSS пункта списка: при текущем языке к rowClass дописывается activeClass. В выпадающем списке текущий пункт выбран всегда по is_current
activeClassactiveCSS-класс активного пункта списка
outerClasslanguagesCSS-класс обёртки
rowClassпустоДополнительный CSS-класс пункта. При showActive у текущего языка к нему дописывается activeClass
tpllanguages.tpl / languages.dropdown.tplЧанк. Без tpl выбирается по outputMode
pageIdтекущийID страницы для ссылки. Ссылка абсолютная (server_protocol + http_host). У стартовой страницы это корень языка
sortbyrankПоле сортировки
sortdirASCНаправление
whereактивные языкиУсловие выборки. Свой where подменяет фильтр active => 1, а не дополняет его

Пустой список языков ничего не печатает. В свой чанк, кроме полей листинга, можно передать key, cultureKey, http_host, description, active, rank, id.

Вывод в шаблоне ​

fenom
{'!getLanguageList' | snippet}
{'!getLanguageList' | snippet : [
  'outputMode' => 'dropdown',
  'activeClass' => 'current',
  'outerClass' => 'languages',
]}
modx
[[!getLanguageList]]
[[!getLanguageList?
  &outputMode=`dropdown`
  &activeClass=`current`
  &outerClass=`languages`
]]

Чанк languages.tpl ​

fenom
<ul class="{$outerClass}">
  {foreach $languages as $language}
    <li class="{$language.rowClass}"><a href="{$language.url}">{$language.name}</a></li>
  {/foreach}
</ul>

Чанк languages.dropdown.tpl ​

fenom
<select class="{$outerClass}" onchange="if(this.value) window.location.href=this.value">
  {foreach $languages as $language}
    <option value="{$language.url}"{if $language.is_current} selected{/if}>{$language.name}</option>
  {/foreach}
</select>

Адрес ресурса на другом языке ​

Сниппет makeLocalizedUrl собирает URL с учётом http_host языка.

НазваниеПо умолчаниюОписание
id—ID ресурса. Пустой id даёт пустую строку
languageтекущийКлюч языка. Нет активной строки с этим ключом: обычный makeUrl без host языка
scheme-1-1 относительный, 0 полный, 1 http, 2 https
fullUrlНетПолный URL с доменом. При scheme -1 и fullUrl false домен отрезается, префикс пути из http_host остаётся. fullUrl true даёт полный URL даже при scheme -1
fenom
<a href="{'!makeLocalizedUrl' | snippet : ['id' => $id, 'language' => 'en', 'fullUrl' => true]}">{$pagetitle}</a>
modx
<a href="[[!makeLocalizedUrl? &id=`[[+id]]` &language=`en` &fullUrl=`1`]]">[[+pagetitle]]</a>