Небольшая заметка, в которой рассматривается достаточно простой способ создать двуязычный сайт на платформе 1С Битрикс всего в несколько действий. Стоит заметить, что изложенный ниже способ подходит для небольших проектов и его уместно использовать только в том случае, когда срок разработки очень ограничен. В остальных случаях можно найти более рациональные пути решения проблемы.
Итак, изначально предполагается, что русскоязычная версия сайта на битриксе уже полностью разработана и либо уже функционирует, либо готова к запуску. После чего, нужно выполнить несколько простых шагов для создания англоязычной копии сайта.
Шаг первый. Добавление второго сайта в админке битрикса.
Перейдя в раздел Настройки продукта > Сайты > Список сайтов можно увидеть, что, в настоящий момент, там представлен только один сайт (как правило с id = s1). Для создания копии сайта, нужно кликнуть на иконку «бургера» слева от значения id и выбрать пункт «копировать». Откроется страница создания копии сайта.
На данной странице следует снять галку «по умолчанию», в строке «папка сайта» указать папку на сервере, в которой будут храниться файлы английской версии (Можно указать, например, папку «/en/»). В разделе региональные настройки можно указать английский язык. Далее идет самое важное действие — в разделе «шаблон сайта» нужно выбрать опцию «выбрать шаблон» и указать пока единственный (русскоязычный) шаблон сайта. Чуть позднее мы изменим этот пункт.
Шаг второй. Создание копии шаблона и подключение его к сайту.
Переходим в раздел Настройки продукта > Сайты > Шаблоны сайтов. В нем выбираем наш рабочий шаблон русскоязычной версии и копируем его. В настройках меняем его название. Далее возвращаемся в раздел списка сайтов, открываем наш англоязычный сайт и в разделе «шаблон сайта» подключаем к нему только что созданную копию шаблона. В типе условия можно оставить значение «[без условия]».
Шаг третий. Модификация шаблона и статичных файлов.
В том случае, если в шаблоне сайта прописаны какие-либо русскоязычные блоки, например формы, надписи на кнопках и тому подобное, а также включаются статичные файлы, содержащие русскоязычный текст (например, включаемая область с адресом, контактами) — то самое время заменить русскоязычный текст англоязычным. Стоит обратить внимание, что изменения надо вносить в тот шаблон, который указан для англоязычного сайта. Статичные файлы надо искать в папке с англоязычным сайтом, т.е. в нашем случае — в папке /en/.
Шаг четвертый. Копирование инфоблоков.
Как правило, при создании двуязычного сайта, предполагается сохранять идентичную структуру url и для русской, и для английских версий. Следовательно, в данном случае, требуется создать копию существующего инфоблока и заменить в нем русский текст на английский. Для простоты примера предположим, что наш инфоблок содержит список статей, разбитый по папкам.
Если на сайте не стоит дополнительного решения, которое дает возможность скопировать инфоблок прямо в админке, то наиболее рациональный путь — это копирование инфоблока с помощью xml-импорта.
Приведенный ниже пример взят из справки 1С Битрикса:
- Сначала нужно выгрузить необходимый инфоблок с помощью экспорта в XML (Раздел Инфоблоки > Экспорт > XML).
- Далее, полученный xml-файл следует открыть любым текстовым редактором (Например, notepad++) и внести небольшие изменения:
<?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.021" ДатаФормирования="2010-03-20T09:55:13"> <Классификатор> <Ид>2 <Наименование>ноутбуки <Свойства> <Свойство> <Ид>CML2_CODE <Наименование>Символьный код
В начале инфоблока требуется поменять узел <ИД> и узел <Наименование>
Далее требуется найти следующий код:
<Каталог> <Ид>2 <ИдКлассификатора>2 <Наименование>ноутбуки
И в нем поменять Ид и ИдКлассификатора на ИД, который мы указали в начале инфоблока, а наименование, соответственно, на наименование, которое мы также указали в начале инфоблока.
- Далее, после сохранения изменений, в разделе импорт XML в админке битрикса подгружаем данный XML файл и привязываем его к английской версии сайта.
Собственно, копирование инфоблока на этом завершено. Теперь в нем можно поменять тексты и прочие данные. Отображаться он будет только на английской версии сайта.
Шаг пятый. Блок с переключателем языков.
Конечно, тут есть несколько разных вариантов. Ниже приведен один из самых простых.
Для английской версии код будет выглядеть следующим образом:
<ul> <li><a href="/<?=str_replace('/en/','',$_SERVER['REQUEST_URI']);?>" hreflang="ru" title="Русский (ru)" ><img src="/flags/ru.png" alt="Русский (ru)"></a></li> <li><a href="<?=$_SERVER['REQUEST_URI'];?>" hreflang="en" title="English (en)"><img src="/flags/gb.png" alt="English (en)"></a></li> </ul>
Для русской, соответственно, следующим:
<ul> <li><a href="/<?=$_SERVER['REQUEST_URI'];?>" hreflang="ru" title="Русский (ru)" ><img src="/flags/ru.png" alt="Русский (ru)"></a></li> <li><a href="/en<?=$_SERVER['REQUEST_URI'];?>" hreflang="en" title="English (en)"><img src="/flags/gb.png" alt="English (en)"></a></li> </ul>
Собственно, что тут происходит? Создается простой список с двумя ссылками и картинками флагов. По клику на российский флаг пользователь попадает на русскоязычную версию данной странице, а при клике на британский флаг на англоязычную версию страницы. Ничего сложного.
Выполнив эти пять действий можно получить рабочую англоязычную версию сайта. На этом тема статьи исчерпана и поэтому можно её заканчивать. Единственное, еще раз стоит заметить, что данный способ можно использовать либо на небольших проектах, либо в условиях ограниченных сроков.