Многосайтовость

Задачи многосайтовости

  • Разработка сайта с несколькими языковыми версиями
  • Разработка мобильного сайта
  • Разработка дополнительных сайтов подразделений и филиалов компании
  • Разработка сайта интернет магазина и его представительства

Особенности

  • Одно ядро продукта
  • Одна БД
  • Единый администратор на все сайты
  • Технология переноса авторизации

Перенос авторизации

В настройках главного модуля установить чекбокс распространять авторизацию на все домены (на вкладке авторизация).

Многосайтовость на одном домене

Особенности

  • Одно доменное имя
  • Отдельный каталог для дополнительного сайта

Пример: www.mycompany.com/s1/, www.mycompany.com/s2/ или www.mycompany.com, www.mycompany.com/s2/.

Принцип

Создается папка, например s2, туда закидывается контент, назначается шаблон сайта, настраивается многосайтовость

Настройка

В настройках сайта (настройки продукта -> сайты -> список сайтов) установить следующие параметры для сайтов s1 и s2:

  • id
  • название
  • папка сайта (для s1 '/' или '/s1/')
  • название веб сайта
  • url сервера (одинаковые)

Многосайтовость на разных доменах

Принцип

  • Отдельное доменное имя для дополнительного сайта
  • Отдельный веб-сервер для дополнительного сайта

Серверные настройки

  • настройка веб сервера
  • делегирование доменов

Виртуальная машина Bitrix

В BitrixVM добавляются два сайта.

Делегирование доменов

В примере курса был отредактирован файл hosts.

Настройка сайтов

В папку первого сайта установить битрикс. Затем в папке второго сайта делаются симлинки на папку bitrix и upload первого сайта.

ln -s /home/bitrix/ext_www/site_one/bitrix /home/bitrix/ext_www/site_two
ln -s /home/bitrix/ext_www/site_one/upload /home/bitrix/ext_www/site_two

Скопировать на второй сайт файлы:

  • access.php
  • .htaccess
  • 404.php
  • index.php

У сайтов указываются следующие настройки:

  • название
  • доменное имя
  • папка сайта
  • название веб сайта
  • url сервера
  • путь к корневой папке веб сервера

Вынесение раздела сайта в поддомен на примере форума

  1. Создаем папку forum
  2. разместим в ней комплексный компонент forum
  3. в настройках сайта добавляем доменное имя mysite.ru и forum.mysite.ru
  4. в папке forum создаем символические ссылки на папки bitrix и upload
  5. для подключения шаблона используем php условие $SERVER['HTTP_HOST'] == 'forum.mysite.ru'

При данном варианте меню на вынесенном поддомене не будет работать, т.к. для этого необходимы абсолютные пути в меню.

Псевдомногосайтовость

  1. Создается поддомен.
  2. В настройках сайта указывается данное доменное имя.
  3. На индексной странице размещается код:
// подключим файл с классом CMainPage
require($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/mainpage.php");
// получим идентификатор текущего сайта по доменному имени
$site_id = CMainPage::GetSiteByHost();
// получим абсолютный путь к индексной странице папки сайта
$page = CMainPage::GetIncludeSitePage($site_id);
// если сайт определен и определена индексная страница то
if (strlen($site_id) > 0 && strlen($page) > 0) {
// подключим страницу
require_once($page);
} else { // иначе если сайт не определен то
require($_SERVER['DOCUMENT_ROOT'] . "/bitrix/header.php");
// далее можно разместить код который будет отображаться если
// сайт ранее не был определен
require($_SERVER['DOCUMENT_ROOT'] . "/bitrix/footer.php");
}

Работа с данными при многосайтовости

Модули поддерживающие многосайтовость

  • Поиск
  • Информационные блоки
  • Интернет магазин
  • Блоги
  • Веб формы
  • Опросы
  • Реклама
  • Управление структурой
  • Форум

Инфоблоки

В настройках инфоблока имеется привязка к сайту

Источник – курс «Основные технологии и расширение типовых возможностей», 1C-Битрикс
Редактировать на GitHub