Поскольку достаточно много запросов было адресовано именно мультисайтовости, давайте обсудим ее реализацию. Для начала определимся, что это такое — мультисайтовость?Мультисайтовость — это возможность на одной физической установке движка (одном наборе файлов) обслуживать сразу несколько сайтов. Чем это удобно?
- Единовременное обновления движка/компонентов для всех сайтов.
- Единовременная загрузка расширений для работы на всех сайтах.
- all — папка, содержащая элементы для всех сайтов.
- [all/modules] — модули для всех сайтов.
- [all/themes] — темы для всех сайтов.
- [all/libraries] — библиотеки для всех сайтов.
- default — папка сайта по-умолчанию (если не создана папка, названная доменом сайта).
- [default/modules] — модули сайта по-умолчанию.
- [default/themes] — темы сайта по-умолчанию.
- files — файлы сайта по-умолчанию.
- settings.php — файл настроек сайта по-умолчанию.
- [first.ru]
- [sub.first.ru]
- [second.ru]
- [sub.second.ru]
Логика работы следующая — если папка, название которой совпадает с названием вызываемого домена, не существует, то используется сайт по-умолчанию (default). Соответственно, также существует папка, где хранятся модули, библиотеки и темы, которые могут использоваться на всех сайтах.
Папки конкретных сайтов по структуре аналогичны папке default.
Идея без сомнения отличная, не даром у Drupal сотни тысяч последователей, однако, на мой взгляд, она избыточна.
Вся информация об активированных для того или иного сайта модулях хранится в базе/кеше.
Если мы уберем папки конкретных сайтов, а также сайта по-умолчанию и оставим одну папку «для всех», то по-сути (если вынести хранение основных настроек сайта за пределы данной конструкции) измениться лишь то, что все сайты будут в админке видеть все расширения без своих особенных тем и модулей, которые могли находится в их папке.
Сейчас более понятно на пальцах.
После установки сайта first.ru в админке можно было наблюдать модули и темы из подпапок all и first.ru. По-сути, мы ничего не теряем, кроме возможности иметь отдельные дистрибутивы модулей/тем для каждого сайта.
То есть все сайты будут видеть у нас все модули и темы, а вот какие из них будут активированы — это будет зафиксировано в настройках сайта.
Прошу заметить, что в данной ипостаси движка сделал ход несовместимый с мультисайтингом — хранение настроек в info-файле.
Здесь два варианта развития событий.
- Шестеренки хранятся в папке /gears, а темы — в /themes. Активируя шестеренку для конкретного сайта, мы просто делаем об этом заметку в базе и сохраняем настройки. Файлы сайтов будут храниться в указанных при их создании папках. Например, /uploads/somesite.ru.
- Шестеренки и темы для каждого домена дополнительно могут храниться в подпапках /sites/site.ru/(gears и themes). Файлы сайтов хранятся также как в Drupal в папках вида /sites/site.ru/files.
С одной стороны первый путь более понятный и простой, с другой — у второго пути больше возможностей, хотя это вопрос спорный.
Хочу услышать мнение тех, кто некогда спрашивал, будет ли мультисайтинг в cogear?


Если я правильно
проснулсято имеется ввиду что мы сейчас дошли до момента, где нужно определиться как хранить настройки шестеренок для каждого сайта?Опять же, если, я правильно понял, то как вариант хранить настройки можно так.
Если шестеренка «user_group» лежит в «all/gears» то настройка для сайта лежит в "/site.ru/gears/user_group.info"
Это как Unix и WIndows, есть папка с программой c:\program files\ а настройки лежат в user\application data\.
Если же шестеренка лежит site.ru/gears/ то и хранить настройки внутри шестеренки как положено.
Но это так, скорее, мысли в слух.
чортъ. в каком случае они превращаются в угловые?
Детект предпочитаемого языка по кукам и\или урлу. Чтоб на предпочитаемом языке был и интерфейс, и собственно посты. Первое делал силами того, что движок (не когир) имеет локализацию. Второе за счёт непересекающихся навигационных веток информации (в случае одного языка навигация по русскоязычной ветке, в случае другого…) В моём случае языковые ветки информации могли и не совпадать (а совпадение делал вручную, дублируя ноды на нужных языках).
А база юзеров будет общая или для каждого сайта свои юзеры?
1. Бывает такое что нужно для каждого сайта свой robots.txt ( Решаемо модулем )
2. Иногда требуют форум, конечно можно сделать forum.sitename.ru, но иногда хочется и sitename.ru/forum, но в случае с Drupal такое невозможно если имеем более 2х сайтов с форумом
3. Бывает что на 1 сайт ссылается 2 домена ( Эта проблема будет решена в 7 версии, путём добавления алиасов )
Можно рассмотреть ещё один вариант, довольно гибкий, часто встречающийся в фраемворках.
Имеем в root сервера
- drupal — базовые файлы движка
- includes — файлы ядра
- modules — модули и тд
- sitename.ru — файлы сайта
- includes — если искомый фаил существует в этой папке движок подключит его вместо системного
- modules — если искомый фаил существует в этой папке движок подключит его вместо системного
- index.php — отправная точка которая инклудит системный bootstrap фаил из папки drupal и запускает движок
Работает довольно просто, системный лоадер индексирует все пути и файлы движка, после кеширует их. Что происходит далее?При иницилизации системы для sitename.ru и запросе файла ( инклуда, как хотите так и называйте ), фаил сначала ищится в директории sitename.ru, если он отсутствует то подключается из папки drupal.
Какой гибкости можно добиться таким способом?
Фактически можно будет хакать любой фаил движка, просто создав его в папке sitename.ru
Решается проблема с добавлением форумов и всякого рода подобных скриптов.
Добавляется возможность иметь для каждого сайта свои robots.txt и .htaccess
При рассмотрении данного способа на шаред хостинге возникает одна проблема, если на хостинге отключена поддержка создания папок для доменов и всё адресуется в одну конкретную папку
Насколько вообще нужен мультисайтинг? Не проще ли ставить отдельный движок для каждого сайта? С одной стороны, если на одном движке будет работать сразу несколько сайтов, то их немного проще будет администрировать, но с другой, если на движке с поддержкой мултисайтинга ставить только один сайт, то будут происходить лишние запросы в БД, и какие-то иные действия с файлами и папками, по сути не нужные для одного сайта. Или я не прав?
Кому-то он может и не понадобиться как таковой, но вот преимущества — налицо.
По поводу изменений — речь идет о новом движке, о второй версии cogear.
Можно отдельно развивать текущую ветку движка.
Cделать Лексус или Сделать похожую на Ладу Калину тачку, чтобы запчасти с Калины подходили на новую тачку?
ЗЫ
Ничего не имею против Отеч. Производителя.
а как же ExpressionEngine от разработчиков CI (новая бета ЕЕ2.0 сделана как раз на CI)? у них настройки сайтов храняться в БД, все модули-плагины расширения для всех сайтов в одном каталоге и не нужно ничего распихивать по каталогам… жаль только что система платная ((