среда, 29 февраля 2012 г.

Языковые версии сайта на UMI.CMS

Сегодня столкнулся с тем, что нужно было сделать английскую и русскую версии для сайта на UMI.CMS. Добавить языковые версии (Модули → Конфигурация → Языки) и выбрать язык по умолчанию для домена (Модули → Конфигурация → Домены) не составило проблемы, то дальше возникли некоторые трудности.
Отсутствует шаблон


Первой из них оказалось отсутствие шаблона для английской версии. Этот вопрос решается просто:
1. Переключаемся на английскую версию (справа вверху язык в админке)
2. Открываем модуль «Структура» и идем в его «Настройки»
3. Прописываем путь к шаблону и его имя.

Ошибка XSLT-шаблонизатора

Дизайн английской версии никак не отличался от русской, поэтому я добавил тот же самый шаблон и тут полезла огромная куча ошибок. Ошибки заключались в том, что файл с языковыми константами для английского языка система не могла найти. Такая ошибка может возникнуть, если вы делаете сайт на основе стандартного xslt-шаблона.

Решается просто:
В папке с шаблоном находится папка i18n, в ней файл constants.ru.dtd, он дублируется и переименовывается в constants.en.dtd. После этого всё работает.

Если вы использовали стандартный xslt-шаблон в качестве основного и стандартное размещение шаблонов (не новое, когда каждый со всеми файлами в своей папке), то файл лежит в /xsltTpls/i18n/constants.en.dtd


Создание структуры


Языковые версии сайта устроены так, что представляют собой два разных сайта с разной структурой. Но, как правило, основная структура сайта не изменяется в зависимости от языка.

Поэтому у меня сразу возник вопрос, можно ли скопировать структуру русской версии в английскую в UMI?

К сожалению, стандартными средствами переносить страницы из одной версии сайта в другую оказалось нельзя и пришлось написать маленький скриптик, который её копирует.

Скачать его можно тут.

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

Пользоваться так:


1. Заливаем файл в корень сайта
2. Вводим в браузере http://yoursite.ru/copystructure.php?from=1&to=2, где 1 - id языка сайта из которого копируем, а 2 - id языка сайта, в который копируем. ВНИМАНИЕ! Перед копирование скрипт очистит структуру, в которую будет копировать, от всех элементов.


Удачного копирования.

Комментариев нет:

Отправить комментарий