author webber (web-ber12@yandex.ru)
если считаете данный продукт полезным и хотите отблагодарить автора материально,
либо просто пожертвовать немного средств на развитие проекта -
можете сделать это на любой удобный Вам электронный кошелек
Яндекс.Деньги 410011544038803
Webmoney WMR: R133161482227
Webmoney WMZ: Z202420836069
с необязательной пометкой от кого и за что именно
- Нет необходимости отдельно создавать главную страницу сайта для языка в корневой папке "язык", поскольку корневая папка теперь и есть главная страница языка.
-
- Папка assets/snippets/evoBabel, содержащая основной сниппет snippet.evoBabel.php (создание языковых версий)
-
- Сниппет evoBabel - для вывода результатов работы в ТВ ресурса
-
- Сниппет lang - для выдачи перевода на нужном языке на сайте
-
- Плагин evoBabel - для правильной отдачи 404 страницы, синхронизации значений выбранных ТВ, чтения в сессию актуальных переводов
-
- Плагин evoBabelPlaceholders - для парсинга языковых плейсхолдеров парсинга языковых плейсхолдеров вида [%Главная страница%] вместо сниппета [[lang? &a=
Главная страница
]]
- Плагин evoBabelPlaceholders - для парсинга языковых плейсхолдеров парсинга языковых плейсхолдеров вида [%Главная страница%] вместо сниппета [[lang? &a=
-
- Модуль lexicon для evoBabel (файлы и текст модуля)
-
- создание неграниченного количества языковых версий сайта при этом каждая версия хранится в своем дереве, что не ограничивает нас никак т.е. структура сайта на разных языках может отличаться (в отличие от YAMS), нет проблем с плейсхолдерами, другими сниппетами и т.п.
-
- ресурсы разных языковых версий связаны между собой - что позволяет при навигации переключаться на нужную языковую версию ресурса
-
- Возможна синхронизация значений нужных ТВ параметров для разных версий ресурса (id нужных ТВ и id нужных шаблонов задается в настройках плагина evoBabel)
-
- Переводы в отдельном модуле Lexicon без перезагрузки и сразу для всех языков. Есть фильтрация, возможность добавления и удаления нужного языка там же
-
- Скачиваем архив со сниппетом. При автоматической установке все последующие действия происходят в автоматическом режиме. Необходимо лишь создать шаблон "Язык" (п.3-6), заполнить параметры модуля evoBabelLexicon и привязать tv relation ко всем шаблонам на сайте (кроме шаблона Язык).
-
- Помещаем в папку assets/snippets/ соответствующие папки
-
- Создаем в корне сайта один (или несколько) папок для языков - например RU,EN и т.п. Это будут главные страницы сайта для соответствующих языков. Алиасы данных папок будут алиасами языков (ru,en,fr и т.п.), а расширенные заголовки (longtitle) - названиями языков в переключателе.
-
- Пусть у нас основным языком будет RU, создаем страницу "Главная" с расширенным заголовком RU и алиасом ru (задаем ее стартовой для сайта в конфигурации MODx)
-
5 Создаем новый TV-параметр - если не создался автоматически (назовем его relation, заголовок - Языковые версии ресурса) с типом ввода Custom Input и в поле возможные значения вписываем код @EVAL return $modx->runSnippet("evoBabel"); id именно этого TV и нужно вносить в настройки модуля как id TV, используемого для хранения связей.
-
6 Прикрепляем данный TV ко всем шаблонам кроме шаблона главной страницы.
-
- Создаем новый сниппет evoBabel и помещаем в него код из соответствующего файла в папке install
-
- Создаем новый сниппет lang и копируем код из соответствующего файла в папке install
-
- Создаем новый плагин evoBabel, копируем код из соответствующего файла в папке install
-
- В конфигурации плагина вставляем
&synch_TV=ids TV для синхронизации;text; &synch_template=ids шаблонов для синхронизации;text; &config=Файл шаблонов;text;assets/snippets/evoBabel/config/config.php
и указываем нужные id TV и шаблонов для синхронизации через запятую,
-
- Системные события для плагина OnPageNotFound, OnDocFormSave, OnBeforeEmptyTrash, OnEmptyTrash, OnWebPageInit,OnDocDuplicate
-
- Создаем новый модуль evoBabelLexicon и помещаем в него код из соответствующего файла в папке install
-
- На вкладке конфигурация в режиме редактирования модуля отмечаем галочку "Включить общие параметры"
-
- В строку "конфигурация модуля" на той же вкладке "конфигурация вставляем
&lang_template_id=id шаблона языка;text; &rel_tv_id=id TV для хранения языковых связей;text; &currlang=язык по умолчанию;text;ru &show_panel=Показывать панель;text;1
и вносим в появившееся поле нужный нам id шаблона языка, id TV для хранения языковых связей и название языка по умолчанию согласно алиасу корневой папки
-
- Сохраняем модуль и опять открываем на редактирование. После чего переходим на вкладку "Зависимости" и открываем ссылку "Управление зависимостями". На открывшейся странице добавляем к зависимостям плагин evoBabel и сниппеты evoBabel, lang.
-
- Опять возвращаемся к редактированию созданных сниппетов evoBabel, lang и плагина evoBabel. На вкладке "Свойства" в выпадающием списке "Импортировать общие параметры модуля" выбираем название нашего модуля.
-
- Создаем плагин evoBabelPlaceholder (событие OnParseDocument) и помещаем в него код из папки install для соответствующего плагина (данный плагин используется для установки языковых плейсхолдеров [%плейсхолдер%] вместо запуска сниппета lang и необязателен
Настройка админки завершена. Теперь в каждом ресурсе мы должны получить в панели "Языковые версии" название текущего языка и список доступных языков. Если перевод уже создан - то будет кнопка "перейти", если еще нет - кнопка "создать".
-
- В нужном месте шаблона размещаем плейсхолдеры [+activeLang+] - для отдельного вывода текущего языка и [+switchLang+] - для вывода переключалки языков
-
- Сами переводы в шаблонах и чанках получаем с помощью сниппета lang
//использование в шаблонах чанках и т.п.
// [[lang? &a=
Главная страница
]] - выведет перевод слов Главная страница для текущего языка из его чанка // использование в сниппетах // [[DocLister? &parents=[[lang? &a=
Папка каталог]]
...другие параметры ..]] // если вы установили плагин evoBabelPlaceholder то вместо вызова [[lang? &a=Главная страница
]] можно использовать языковой плейсхолдер [%Главная страница%]
- Сами переводы в шаблонах и чанках получаем с помощью сниппета lang
//использование в шаблонах чанках и т.п.
// [[lang? &a=
-
- Модуль поставляется "как есть", перед установкой изучите инструкцию и сделайте дамп базы сайта
-
- При запуске модуля создается новая таблица "префикс_lexicon" в базе данных.
если у вас на странице на главной вкладке только один tv-параметр и это параметр смены языков, то из-за особенностей modx единственный tv с типом ввода custom input не показывается. Для решения данной проблемы просто создайте еще один произвольный tv например с именем okLang и типом текст, а затем скройте его через managermanager просто прописав правило mm_hideFields('okLang', '', ''); в чанке правил mm_rules
По вопросам сотрудничества обращайтесь на электронный ящик web-ber12@yandex.ru