我的网站是为普通用户设置一个部分,为管理员设置一个部分,以及仅供匿名访问者使用的部分.网站的每个部分都需要更改Drupal设置以使用不同的主题,更改主要和次要链接,更改使用的块等等.换句话说,用户体验会在不同部分之间发生显着变化.
我可以通过使用Drupal的多站点,共享数据库,并使用settings.php覆盖我需要的变量(即:menu_primary_links_source)来完成我需要的工作.但是,为了从操作的角度来看事情更易于管理,并且购买灵活性,我正在考虑使用PURL API(purl.module)为某些网站部分的URL添加前缀,并让我的主题和自定义模块按照到当前的PURL前缀.
在开始之前,我想确保我不打算对Spaces.module进行折扣.Spaces使用PURL,Features和Context(我目前也在为我的网站使用).我不完全理解Spaces究竟是如何适应图片的.它会帮助我制作不同的网站部分,每个部分都有特定的配置和行为吗?或者我最好直接依赖PURL API?
Spaces-PURL-Context难题.乐趣.我一直想写这篇长篇大论来完成我的头脑.
Spaces是一个为您的站点创建覆盖配置容器的模块.它不是特别关于功能,而是关于能够使用Spaces的任意数量的配置值,包括功能是否处于活动状态.(Active并不意味着该模块被禁用,只是因为一些面向功能的东西被淘汰,例如内容类型和Spaces-aware Views.
使用Spaces时,您需要确定要使用的"桶"类型.Open Atrium使用OG和用户形状的存储桶,您需要的是一种基于用户角色的新型存储桶.为了理智起见,您甚至可能需要创建一个单独的模块,只是为了将用户角色定义为Drupal中更具体的东西,有点像Spaces OG需要依靠有机组来实现许多概念.
上下文最终是页面装饰机制.你告诉它关于页面的一些东西,它会相应地修改页面.上下文无法修改URL,反之亦然.功能定义上下文以告诉站点如何为该功能唯一地呈现给定页面,上下文和空格或上下文和PURL之间没有直接连接.
PURL是一种在URL中粘贴东西并将它们保留在那里直到完成它们的方法.
具有PURL集成的空间基于以下两种方式之一触发:URL或页面中内容的某些内容.为了解释这一点,我将以Spaces OG为例.
drupal_goto()
重定向整个页面以获得URL一致性.这将胜过任何现有的URL结构.触发Space后,所有Spaces配置值都会被激活.这将意味着Space的预设默认值(您可以为每种Space类型设置多个默认Space配置)覆盖Drupal的默认值,而默认值则由专门为Space保存的任何配置覆盖.在Open Atrium的情况下,这包括诸如组颜色,仪表板上的块和启用的功能之类的好东西.
如果用户去访问由功能提供的内容 - 节点,视图等,则任何与该节点相关的上下文,该视图,任何模块提供的URL可能只是被触发,并开始使用块和主题进行操作为功能的内容定制页面.
正如我上面提到的,听起来好像你的第一步是尝试查看Spaces OG,并将其重写为以用户角色而不是有机组为中心.除了从Spaces OG进行一点复制和粘贴之外,你不应该直接使用PURL.您可能希望在Spaces问题队列中发布这个想法,以便维护者可以看到它并给出指针.