Drupal → Модуль Domain Access — несколько связанных сайтов на одной установке Drupal

11.05.2012

Описание

Domain Access это набор модулей, позволяющих создать нескольких связанных сайтов (affiliated sites) на одной установке друпала с одной общей БД.

Например можно создать по сайту на каждое представительство вашей фирмы:

  • moscow.myfirm.ru
  • spb.myfirm.ru
  • kirov.myfirm.ru

которые будут иметь общие настройки (тема, пользователи, блоки, вьюсы и т.д.), но разный контент.

Модуль не использует префиксы таблиц, как это делается в классическом мультисайтинге, а работает на основе расширенной системы прав доступа к материалам (хотя префиксы и возможны).

В модуль входит:

  • Domain Access — ядро
  • Domain Alias — позволяет указывать алиасы для доменов
  • Domain Configuration — настройки сайта, зависящие от домена
  • Domain Content — улучшенная страница управления контентом
  • Domain Navigation — блок для быстрого перехода на другие домены
  • Domain Settings — настройки, сохранённые с помощью system_settings_form() будут зависеть от домена
  • Domain Source — позволяет в форме создания материала указать исходный домен
  • Domain Strict — позволяет ограничить пользователям просмотр контента на определённом домене
  • Domain Theme — настройки темы, зависящие от домена

Полезные контриб модули:

  • Domain Views — интеграция с Views
  • Domain Blocks — видимость блоков на основе домена
  • Domain Menu Access — видимость пунктов меню на основе домена

Установка

1. Распаковать модуль в sites/all/modules

2. Добавить в конец settings.php:

include DRUPAL_ROOT . '/sites/all/modules/domain/settings.inc';

3. Включить необходимые модули.

4. Настроить модуль на странице admin/structure/domain

Скриншоты:

Домены
Настройки
Настройки
Форма добавления материала

Написанное актуально для
Domain Access 7.x-3.3
Похожие записи

Комментарии

Этот модуль в 6-ке славился своей несовместимостью с другими модулями и тем, что временами ведет себя непредсказуемо. Хочу заметить, что DA стоит использовать если вам нужна специфическая настройка прав к разным сайтам-аффилитатам. Если вам нужен обычный мультисайтинг, имхо лучше ручками настроить общие и отдельные таблицы.

мне нужен был мультисайтинг с одной базой, но разным контентом. перспектива создавать таблицы на каждый_домен/новое_поле особо не радовала, поэтому domain access подошёл как нельзя лучше. если это можно было реализовать как-то по другому, без лишних усилий, то с удовольствием послушаю

Скорее всего в этом случае вы правильно выбрали DA. Если таблиц достаточно много, и раздельные таблицы могут динамически добавляться/удалятся/объединяться (как в случае с схемой FieldAPI), то DA здесь лучший вариант

А я вот ломаюсь что выбрать - DA или мультисайтинг с префиксами. У меня будет два сайта с одинаковыми настройками, но на разных языках. Ситуация усложнена тем, что надо сохранять значение таблиц модуля Voting API общим для обоих сайтов, а соответственно, ID материалов и пользователей должны быть общими. Как считаешь, что лучше выбрать? Просто опять же по воспоминаниям из D6 - DA действительно косячный.

языки это i18n. или надо как-то по особенному?

Там сайт на разных доменах, могут отличаться блоками и содержимым.

я тут влезу как когда-то делавшая доклад по мультиязычности :)

Там сайт на разных доменах

можно сделать без мультисайтинга

могут отличаться блоками

i18n творит хорошо помогает с блоками. я думаю, что в Panels, как и в Views тоже есть необходимые настройки, в случае небольших различий. Так что можно сделать без мультисайтинга.

и содержимым.

Содержимое разных типов можно переводить с сохранением nid (Field Translation), без сохранения (Content Translation) или просто привязать к какому-то одному языку. Так что можно без мультисайтинга :)

@kalabro вопрос не в тему, но скажите у вас своего блога нет?) Мне кажется вы могли бы много чего интересного рассказать drupal-юзерам :)

emzzy, http://www.drupal.ru/username/kalabro
Если xandeadx сделает раздел «Письма читателей», то я бы с удовольствием генерировала ему уникальный контент раз в месяц)

symbiosss
26.06.2012, 00:37

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

может потому что вы под админом

symbiosss
26.06.2012, 19:49

если не сложно поясните как правильно реализовать?
мои мысли таковы. Админ может выбрать к какому домену привязать ноду. выбирает и нода отправляется на нужный поддомен. Пробовал так, в итоге анонимы видят все ноды на всех поддоменах

проверьте права доступа, если не поможет, то пишите разработчику

Айрат
16.08.2012, 15:03

ДД.

У меня проблема с этим модулем. Переношу работающий сайт на свой локалхост, или на поддомен на хостинге, вижу access denied для root пользователя.

Гость
31.08.2012, 17:28

Как настроить Апач в сборке Denwer для работы с модулем на локале?
Пробовал в httpd.conf прописывать

DocumentRoot /home/mysite.ru
ServerName mysite.ru
ServerAlias *.mysite.ru

Всё время выкидывает на "Ура заработало!" Денвера.

Скажите, умеет ли DA работать на разных доменах?
Т.е. xxx.com yyy.com ?

Можно ли выбрать разные темы для этих доменов?

DA работает везде, где работает друпал

Не понял ответа.
Как настраивать DA так, чтобы сайты xxx.com и yyy.org использовали одну и ту же базу но брали только свои материалы?

прочитать статью, поставить модуль, настроить сервер

исчерпывающий ответ :) Ладно ушел дальше гуглить

Гость
06.05.2013, 21:37

Подскажите, возможно ли настроить данный модуль так, чтобы авторизация/выход с сайта происходила сразу на всех поддоменах, т.е. чтобы при заходе на другой поддомен не надо было заново логиниться?

Александр
13.08.2013, 11:46

http://xandeadx.ru/blog/drupal/570#comment-6159
"в итоге анонимы видят все ноды на всех поддоменах"

Cтолкнулся с той же проблемой, не нашёл как исправить ?
Использую Drupal 7.22 и DA 3.10

Гость
21.08.2013, 12:56

Спасибо за материал! Поставил этот модуль, создал поддомен, но при попытке зайти на него браузер выдаёт ошибку "Сервер не найден". А так же в настройках этого домена появляется сообщение "http://domain.site.ru/sites/all/modules/domain/tests/200.png is not responding as expected and may not be configured correctly at the server level. Server code 0 was returned."
Помогите, пожалуйста, у кого есть мысли по этому поводу.

Здравствуте. При установки модуля domain access
Всегда выходит ошибка
DatabaseSchemaObjectExistsException: Таблица domain уже существует. в функции DatabaseSchema->createTable() (строка 657 в файле /home/u9715/domains/knl.kz/includes/database/schema.inc).
И потом приходиться восстанавливать базу данных. В чем может быть проблема?

логично предположить в том, что таблица domain уже существует

Я уже удалял таблицы. Но все равно при установке, либо эта ошибка. Либо вообще ошибка сервера. И сайт вообще не запускается.

Кирилл
08.12.2013, 14:47

а модуль sites для подобных задач подойдет? там есть возможность устанавливать другие домены, вместо поддоменов.
Просто у меня модуль Domain Access всю малину портит, после него почему-то разные баги появляются, например никакие модули больше не включаются.

Кирилл
08.12.2013, 17:02

Я розобрался с глюками, виноват был модуль subdomain
от модуля sites отказался, и теперь все сделал по статье в инструкции с помощью модуля Domain Access, Подключил поддомены и новые домены. все прекрасно работает. спасибо за статью,

Кирилл
08.12.2013, 20:22

xandeadx Подскажи пожалуйста, можно ли с помощью данного модуля DA отключить общую регистрацию? Зарегистрированные пользователи должны входить только на 1 сайт.

Кирилл
12.12.2013, 22:57

xandeadx, посоветуй как решить проблему:

создаю например 2 сайта:
1.site.ru
2.site.ru

Но если в браузере ввести например 5646.site.ru , то этот сайт тоже открывается. Как сделать так, чтобы эти левые сайты не открывались?

настроить апач, или что вы там в качестве http сервера используете

Кирилл
05.01.2014, 11:32

У меня кстати тоже на одном сайте есть проблема:
«Анонимы видят все ноды на всех поддоменах»
Drupal 7.25 и DA 3.10
писать разработчику?

Сергей
25.03.2014, 15:31

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

Ольга
04.04.2014, 22:03

Здравствуйте. Установила модуль, при выполнении п.2 Добавить в конец settings.php строки, сайт перестаёт работать. Убираю эти строки из settings.php сайт выдаёт ошибки:
Notice: unserialize(): Error at offset 9 of 32 bytes in variable_initialize() (line 920 of /home/g/gerba/svadba-vsem.ru/public_html/includes/bootstrap.inc).
Domain module installation is incomplete. See INSTALL.txt and check your settings.php file.
Domain access failed to load during phase: bootstrap include. Please check your settings.php file and site configuration.
Замучилась прямо, не могу понять причину...

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

Т.е., регистрируется пользователь с логином user-15; ему создается поддомен user-15.site.ru - и пользователь прикрепляется к этому домену.

Гость
25.06.2014, 08:53

А умеет он генерировать поддомены на основе терминов?

Вот такие:
moscow.myfirm.ru
spb.myfirm.ru
kirov.myfirm.ru

Как если бы Москва, Киров и Спб были терминами словаря?

Гость
28.09.2014, 10:29

после установки модуля Domain Access появилось желтое, предупредительное сообщение и оно кругом теперь выскакивает: "Эта форма чувствительна к домену, убедитесь, что вы выбрали правильный домен перед сохранением". В журнале по этому поводу ни чего нет. Только мне эта надпись уже достала...

А можно ли с помощью DA настроить использование разных тем для разных доменов?

подскажите как на одном домене показать страницу view одну , а на другом поддомене - другую view ?
т.е. при создании view путь указывается относительный, получаеться например example.com/pathtoview
а когда заходим по m.example.com/pathtoview - нужно отобразить другой view.

Гость
28.04.2015, 20:57

модуль, в хук меню "pathtoview".
В колбеке простое условие:
if ($domain == 'first') {
return views_embed_view('view_name', 'display_id');
}
else {
return return views_embed_view('view_name2', 'display_id');
}

Либо если друпал апи не знаете, то я бы вывел страницу через panels. Для каждой панели настроил бы selection_rules на домен. Скорее всего понадобится https://www.drupal.org/project/domain_ctools.

Андрей
13.08.2015, 09:01

Подскажите а как решить такую задачу:
Материалы привязаны только к домену 1. Задача вывести их во вьюшке (блоке) на домене 2.
Сейчас вьюшка работает только в режиме админа, а для не авторизованного пользователя не выводится. Говорят, что нужно чтобы материал был привязан и к домену 2, но мне нужно чтобы он был привязан строго к домену 1 (это связано с поиском, не хочу дублировать материалы на разных доменах).

Если привязать материал к 2-м доменам, он выводится.
Вопрос, как это обойти? Как вьюшку, что работает только для админа показать не авторизированному пользователю?

Сергей
20.08.2015, 21:52

кто знает как сделать чтоб в поддомене было robots.txt, sitemap.xml и файл для индексации? или папку подцепить к поддомену использую плагин Domain Access

Дмитрий
13.09.2015, 15:19

Здравствуйте, может подскажите как получить из шаблона ноды *.tpl.php название текущего поддомена по его ID. (Через объект ноды виден только ID поддомена).

Ольга
25.02.2016, 15:50

Добрый день! Подскажите, а можно ли сделать так, чтобы содержимое корзины DC и весь процесс оформления заказа был прозрачен для всех поддоменов. Т.е. чтобы при переходе с поддомена msk.site.ru на piter.site.ru пользователь продолжал видеть добавленные в корзину товары или страницу checkout/***?

> "Эта форма чувствительна к домену, убедитесь, что вы выбрали правильный домен перед сохранением"

это не от ядра DA, а от его субм-ля domain_settings. Отключите его: он нужен только для использования стандартных форм админки под специфич. домен.

на локалке это реально развернуть все?
получил кучу ошибок после включения

Notice: Undefined index: description in drupal_check_module() (line 1233 of E:\OpenServer\domains\domain\includes\install.inc).
(Currently using Domain Access The domain string is invalid for domain:81:
At least one dot (.) is required, except when using localhost.
If you are using drush, please provide the --uri option (e.g. drush en domain --uri="http://example.com/optional_subdirectory").)

Да, на локалке реально.
достаточно в ... apache\conf\vhosts.conf сделать запись с "ServerName ваш_sub.ваш_сайт"

Евгений
16.08.2016, 15:25

Здравствуйте, скажите пожалуйста, есть какой-нибудь вариант интеграции Domain Access Entity + Search API + Кастомной сущности? Дело в том, что у нас есть мультисайт, кастомную сущность (Недвижимость) необходимо индексировать по всем поддоменам мультисайта, Search API же индексирует только экземпляры сущностей, привязанные к основному домену, а нам необходимо индексировать все. Какое решение может быть?

Не получается установить модуль в OpenServer.

Module domain doesn't meet the requirements to be enabled. [error]
(Сейчас используется Domain Access The domain string is invalid for mysite:8085:At [error]
least one dot (.) is required, except when using localhost.
If you are using drush, please provide the --uri option (e.g. drush en domain
--uri="http://example.com/optional_subdirectory").)

Использую команду drush en domain --uri=http://mysite:8085
Сайт работает, в settings добавил строку

Дмитрий
23.06.2017, 06:54

xandeadx, подскажите пожалуйста. Как мне при использовании этого модуля добавить еще глобальных переменных в настройки домена (сейчас там только Тайтл и Слоган). К примеру мне нужны такие переменные:
- телефон
- адрес
- id счетчика
и другие типы данных с виджетами
- select
- radiobuttons
- checkbox

Дмитрий
23.06.2017, 06:54

И надо обязательно чтоб они подтягивались в Rules

Нужна помощь
24.01.2018, 00:33

Добрый день. Разве таких настроек (как в статье достаточно?) Все сделано также, но не работает. Показывает, при попытка входа на созданный домен, что такого не существует.

Модуль за вас домен не создаст и сервер не настроит.

Нужна помощь
25.01.2018, 14:09

xandeadx, вам в любом случае спасибо! Вы делаете нужную работу. Я часто что-то нахожу в вашем блоге.

Но что касается этой инструкции. Мне кажется было важно, указать, что еще необходимы настройки на сервере. Если сервер, то сделать виртуальные хосты на каждый нужный "поддомен", если хостинг, то создать поддомены, ведущие на директорию главного (source) сайта. Возможно мое дополнение поможет кому-то.

Важно учитывать, что если сайт расположен на хостинге, то скорее всего настроить все так, как того требует этот модуль, не получится. Для его работы необходимо иметь именно выделенный сервер (см. пункт 2.2. в INSTALL.txt модуля).

Добавить комментарий