Создание мультиязычного сайта на MODx(0.9.6.1) в мельчайших подробностях
Предположим нам нужно создать сайт на двух языках. Русский и Английский.
1) Входим в панель управления, создаём новый документ, назовём его "ru".
Данный документ будет контейнером (Настройка страницы -> Контейнер (содержит дочерние документы) - поставить галочку).
2) создаём второй контейнер, аналогичный первому, но с названием "en".
3) создаём сниппет (Ресурсы -> Управление ресурсами -> Сниппеты -> Новый сниппет).
Назовём сниппет
redirect. Код сниппета (php):
<?php
$url = $modx->makeUrl($id);
ob_end_clean();
header('Location: '.$url);
?>
* данный сниппет предназначен для редиректа на определённую страницу
4) создадим второй сниппет, назовём его
select_language.Код сниппета (php):
<?php
if(strstr($_SERVER[REQUEST_URI], 'ru'))
{
echo '<a href="../en">English</a>';
} else {
echo '<a href="../ru">Russian</a>';
}
?>
* этот сниппет предназначен для вывода ссылок. English или Russian.
5) теперь необходимо создать несколько документов в контейнерах "ru" и "en".
Это могут быть любые страницы, главное, чтобы они были вложены в соответствующие контейнеры
6) далее необходимо отредактировать созданные нами ранее страницы - контейнеры.
Сейчас нам нужно сделать так, чтобы при входе на страницу "ru" нас отправляло на документ внутри контейнера "ru". Так же и с "en".
Редактируем контейнер "ru". В поле "Содержимое документа" пишем:
В моём случае id страницы, на которую я перенаправляю пользователя - 7.
7 страница - это
главная страница сайта на русском языке.
У Вас страница, скорее всего будет иметь другой id
7) редактируем контейнер "en". В поле "Содержимое документа" пишем:
Опять же, 5 id, в моём случае, это
главная страница англ. сайта, на которую перенаправиться пользователь.
У Вас страница, скорее всего, будет иметь другой id
Закрепим пункты 6 и 7. После редактирования документов-контейнеров "en" и "ru".
Пользователь, зашедший по url -
http://my_site.ru/ru - попадёт на страницу 7, т.е на русский вариант сайта (потому-что документ с id 7 находится в папке "ru").
А пользователь, который пошёл по
http://my_site.ru/en - на страницу 5, т.е англ. вариант сайта.
8 ) После всех вышеперечисленных действий, размещаем сниппет
[[select_language]] в нужном месте вашего шаблона.
Входим на сайт, нас должно автоматически перебросить на главную страницу русского сайта (если контейнер "ru" у Вас
имеет id = 1).
Если Вам требуется, чтобы англ. версия грузилась первой - Инструменты -> Конфигурация -> Сайт -> Первая страница
Вы можете поменять значение с 1, на id документа-контейнера "en".
9) Настройки в панели администрирования
Инструменты -> Конфигурация
-
Переписывать путь к изображениям? - НЕТ
-
Путь к файлам
Узнать требуемый путь, можно из phpinfo(Отчеты -> phpInfo() - Просмотр)
В phpinfo() ищем директиву DOCUMENT_ROOT.
Например у меня
DOCUMENT_ROOT Z:/home/maws/www
И к этому пути нужно дописать директорию, где MODx хранит файлы. Т.е /assets/
В результате. Переходим в Инструменты -> Путь к файлам и прописываем
там свой путь. Я вписываю туда Z:/home/my_site/www/assets/
-
URL к файлам: я пишу -
http://www.my_site.ru/assets/
http://www. - обязательно писать!
Переходим на вкладку Инструменты -> Конфигурация -> Файл-менеджер.
В поле "Путь для файлового менеджера" пишем значение директивы DOCUMENT_ROOT,
но в этот раз без /assets/. В моём случае - Z:/home/my_site/www/
Возможные проблемы
Может возникнуть проблема, когда вы загружаете файл через файловый менеджер, добавляете картинку в документ. Сохраняетесь, но при входе на эту страницу не отображается изображение. В этом случае пройдитесь по пункту
9 внимательнее. Если это не помогло, можно сделать убого, но работать будет.
Заходим на ftp своего сайта. В папку /assets/plugins/tinymce212/jscripts/tiny_mce/plugins/advimage/jscripts
Открываем файл
functions.js. Ищем
var src = formObj.src.value;
и правим эту строку на:
var src = 'http://www.my_site.ru/'+formObj.src.value;
http://www.my_site.ru/ - в вашем случае адрес будет другой.
Входим в панель администрирования, Инструменты -> Конфигурация -> Интерфейс и представление -> Переписывать путь к изображениям? Выбираете - да.
Вот и всё. С виду объёмно, а на деле - просто.
полезные ссылки:
http://wiki.modxcms.com/index.php/Make_Multi_Lingual_Site
http://yar-it.com/blog/modx-revolution-multi.html