我们需要开发以下结构的Drupal多个网站。(我们正在从DotNetNuke迁移。)
不幸的是,使用子域不是一种选择。应该有超级用户可以管理所有站点和子站点,以及每个子站点的特定站点管理员。
我们希望使用相同的Drupal代码库和数据库。
对于Drupal核心来说,这是可能的,还是有一个Drupal模块来实现这一点呢?
发布于 2013-11-04 12:41:27
您的所有要点都可以通过核心来实现(即不需要为此安装模块)。
在Drupal中,设置一个带有子目录(甚至是多个子目录级别)的多站点是标准费用。您是如何设置这一设置的,这在标准文件中有说明。您还可能希望看到关于设置多站点的我的博客。该条涵盖了所有三个备选方案:
example.org + example.com。example.org + sandbox.example.org.example.org + example.org/sandbox.(它还讨论了建立共享数据库,但只有最简单的用例,其中每个站点都有自己的内容、用户和配置。我还没有写过用例,其中不仅包括数据库,还有一些表也是共享的。)
一个错误的个人似乎认为你不能用子目录来做这件事。因此,为了记录在案,下面是一个设置为使用子目录的muli站点的示例:
为了解决您的其他关切:
应该有超级用户可以管理所有站点和子站点,以及每个子站点的特定站点管理员。
最简单的方法是为每个属于多站点的站点设置单独的{users}表。然后,您只需使用标准的基于Drupal角色的访问控制系统来设置超级用户和特定于站点的管理员。但是,您也可以在所有站点之间共享{users}表(如下所述),以便有一个用于管理所有站点的用户的单一前端。
我们希望使用相同的Drupal代码库和数据库。
多站点背后的整个想法是Drupal代码库是共享的,因此默认情况下会发生这种情况。
至于共享数据库,有两个选项,您的问题没有具体说明您想要哪一个:
site1_、site2_等)。当您为每个站点设置数据库时(在db配置面板上的"Advanced“下面)。{users}**)在站点之间共享。要做到这一点,您需要设置数据库以使用多个前缀。这个问题的公认答案告诉您如何使用前缀在多站点实例之间共享某些表(在所示的示例中,表{users}、{sessions}、{role}和{authmap}是共享的)。还有一个项目[域访问**](https://drupal.org/project/domain)可以帮助您在站点之间共享内容,但我对此并不熟悉。如果你尝试使用它,并遇到问题,问一个关于它的新问题。最后注意:如果您想在站点之间共享许多表,那么使用有机基团项目来管理权限,用户和单个站点上的内容可能比部署多个站点更好。
发布于 2014-07-13 14:24:18
Drupal多站点特性允许您使用同一个数据库使用多个数据库。但是,如果您试图共享尽可能多的数据,那么使用多个数据库将是一个错误。应该避免允许您共享带有前缀的表的Drupal特性;有些表(例如变量表)很难共享。沿着这条路走,需要对Drupal的内部结构和您所有的控制模块有很多的了解,并将引入维护问题。
共享数据的一个更好的解决方案是只有一个Drupal站点。使用有机基团在您站点的不同部分授予不同的用户不同的权限。使用上下文模块定义站点中的特定路径(例如,subsite1、subsite2、subsubsite3),这些路径的外观或行为应该有所不同。然后,您可以根据正在查看的组为您的站点设置一个完全不同的外观,然后使用有机群体主题。
我在域访问模块中非常成功地使用了这一技术;但是,在您的示例中,您没有多个子域,因此不需要这个模块。只需设置您的有机组路径来匹配您的子站点,og_theme将提供这些区域是完全不同的站点的错觉。
https://drupal.stackexchange.com/questions/91083
复制相似问题