MODX. Управление словарями в MODX / Lexicon
Отредактировано: 30 Июня 2019
Каждая более менее серьезная CMS оснащена функционалом «словарей». Они необходимы для возможности реализации мультиязычных сайтов, или сайтов с различными стилями языковых конструкций. Не исключение в этом случае и MODX Revo.
Словари содержатся в *.inc.php файлах или БД.
- Словари относящиеся к ядру админки MODX лежат по адресу /core/lexicon/
- Словари относящиеся к компонентам, по адресу /core/components/имя_компонента/lexicon/ Подробнее о структуре компонентов
- Словари созданные, через интерфейс управления словарями в системном меню MODX, хранятся в базе данных, в таблице _lexicon_entries.
В каждом каталоге lexicon лежат подкаталоги с аббревиатурой языка (en, ru и т.п.), в которых лежат языковые файлы с конкретным языком. Количество файлов не ограничено, но default.inc.php, как правило, должен присутствовать.
Чтобы создать свой словарь, сперва надо создать пространство имен (Namespaces), в системном меню MODX. Далее,
если словарь не привязан к какому-либо компоненту:
- идем в меню управления словарями (Lexicons), в системном меню MODX, и нажимаем «создать запись / create entry».
- Выбираем пространство имен, тему, язык, вводм ключ, нажимаем сохранить — запись готова.
если словарь привязан к компоненту:
- в папке компонента идем в папку lexicons, в нужный язык, и вносим значения в формате:
$_lang['lexicon_key'] = 'Описание';
Если попытаться добавить лексическое значение, привязанное к пространству имени компонента, без использования файла, то возможен баг, при котором в базу вносится только первая запись, а все последующие исчезают в неизвестном направлении.
Чтобы увидеть изменения лексических файлов на сайте, необходимо сбросить кеш.
Вызов лексического значения при помощи тегов MODX:
[[%lexicon_key? &namespace=`пространство_имен` &language=`ru`]]
// Fenom
{$_modx->lexicon('lexicon_key')}
//или
{'lexicon_key' | lexicon}
Вызов лексического значения в ExtJS:
_('lexicon_key')
Вызов темы через xPDO:
$modx->lexicon->load('namespase:default');
// с указанием конкретного языка
$modx->lexicon->load('ru:namespase:default');
Для перевода пользовательских настроек системы используется запись лексикона, которая названа в честь ключа настройки с префиксом «setting_»:
setting_ + Key
Описание должно следовать тому же формату и включать суффикс «desc»:
setting_ + Key + _desc
Здравствуйте!
Позвольте представиться, меня зовут Марина. Более 10 лет я занимаюсь обслуживанием сайтов и развитием интернет проектов. Если вы хотите избавиться от хлопот связанных с созданием и поддержкой сайта, тогда вы попали по адресу. При работе с сайтами я предоставляю качественные услуги, ориентируясь на ваши индивидуальные потребности. Для связи со мной воспользуйтесь формой обратной связи.