Обслуживание нескольких сайтов с одним друпалом (без использования нескольких сайтов) - PullRequest
3 голосов
/ 19 октября 2010

Я ищу совет эксперта о том, как лучше обслуживать несколько сайтов с одним экземпляром Drupal (используя Pressflow 6.x).Давайте рассмотрим компанию, нуждающуюся в этом, называемую «Группа компаний ABC», и у нее есть 3 дочерних предприятия.Итак, всего будет четыре сайта:

  1. www.abcgroup.com
  2. www.company-a.com
  3. www.company-b.com
  4. www.company-c.com

Вот наиболее интересные вещи:

  • Пользователи будут доступны всем сайтам
  • Каждый сайт будет "в основном" размещать свой собственный контент (скажем, текст приветствия на домашней странице или пункты меню - разные для каждого сайта)
  • Некоторое содержимое будет отображаться на всех сайтах (скажем, уведомление всей компании .... или справочник сотрудника)
  • Тема для каждого сайта будет отличаться

Теперь я думаю о записи DNS, поэтому каждыйдомена указывают на ту же установку Drupal, и когда Drupal запускается при загрузке, я хотел бы прослушать массив $ _SERVER, чтобы узнать, какой сайт подвергается удару.Затем я хотел бы соответственно загрузить тему, показать содержимое, относящееся к этому сайту, а также показать содержимое, доступное для всех сайтов.

Чтобы это произошло, я создал тип узла «Сайт» и создал четыре содержимого для каждого из сайтов.Затем для каждого другого типа контента (скажем, страницы) я поместил ссылку на узел на тип контента «Сайт» с несколькими значениями, чтобы при создании нового контента администратор мог указать, на каком сайте этот контент будет отображаться.Однако после этого я застрял.

Я пытался понять Контексты, Пространства, PURL - но еще не понял их полностью, и я верю, что смогу использовать силу сообщества, чтобы выручить меня.Как вы думаете, что является лучшим подходом к этому сценарию?

Было бы очень полезно, если бы кто-нибудь мог предложить направление.

С уважением,

Эмран

Ответы [ 3 ]

5 голосов
/ 19 октября 2010

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

Надеюсь, это поможет!

http://drupal.org/project/domain

4 голосов
/ 20 октября 2010

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

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

Учитывая множество особых случаев, которые вы должны охватить, трудно указать общее направление (кроме предложения использовать Модуль доступа к домену ;), кроме одногоГлавной целью было бы проверить комбинацию функций custom_url_rewrite_inbound() / custom_url_rewrite_outbound().Это позволит вам выполнять довольно низкоуровневые манипуляции с URL-адресами для входящих запросов, а также для URL-адресов, сгенерированных для вывода, и то, и другое, что вам нужно сделать, если вы хотите обслуживать несколько доменов из одного экземпляра.

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

0 голосов
/ 20 октября 2010

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

Я даю доступ к домену двумя большими пальцами, но просто убедитесь, что вам действительно нужно то, что он на самом деле делает.

Кроме того, я бы заглянул в модуль Feeds.module. Вы можете извлекать контент из любого места (особенно с другого сайта drupal), он импортирует его напрямую и автоматически создает из него узлы и поля.

...