我的网站将有一个普通用户的部分,经理的部分,只有匿名访客使用的部分。网站的每个部分都需要更改Drupal设置,以使用不同的主题,更改主要和次要链接,更改使用哪些块,等等。换句话说,用户体验在不同的部分有很大的变化。
通过使用Drupal的多站点共享数据库,并使用settings.php覆盖我需要的变量(即: menu_primary_links_source),我可能可以实现所需的功能。然而,为了从操作的角度使事情更易于管理,并购买灵活性,我正在考虑使用PURL (purl.module)为某些站点部分的URL添加前缀,并使我的主题和自定义模块根据当前的PURL前缀做出反应。
在我开始之前,我想确保我没有打折Spaces.module。Spaces使用了PURL、Feature和Context (我目前也在我的网站上使用它们)。我不完全理解空格是如何与图片相匹配的。它会帮助我创建不同的站点部分,每个部分都有特定的配置和行为吗?还是直接依赖于PURL会更好?
发布于 2010-08-19 00:13:11
Spaces-PURL-Context难题。有趣的。我一直想把这篇文章写得很长一段时间,以结束我对它的理解。
什么是空格?
Spaces是一个为您的站点创建被覆盖配置的容器的模块。它不是专门关于功能的,它是关于能够与空格一起工作的任意数量的配置值,包括功能是否处于活动状态。(激活并不意味着模块被禁用,只是一些面向功能的东西被迅速删除,例如内容类型和空间感知视图。
当使用空格时,你需要决定你想要使用什么类型的“存储桶”。Open Atrium使用OG和用户形状的bucket,你需要的是一种基于用户角色的新型bucket。为了保持理智,您甚至可能需要创建一个单独的模块,以便在Drupal中将用户角色定义为更具体的东西,就像Spaces OG需要在许多概念上依赖于有机组一样。
什么是上下文?
上下文最终是一种页面装饰机制。你告诉它一些关于页面的东西,它就会相应地修改页面。上下文不能修改URL,反之亦然。特性定义上下文来告诉站点如何为该特性唯一地呈现给定的页面,在上下文与空间或上下文与PURL之间没有直接的联系。
什么是PURL?
PURL是一种将内容粘贴到URL中的方法,并将它们保留在那里,直到您使用完它们。
它是如何粘合在一起的
集成了PURL的空间是基于以下两件事之一触发的: URL或关于页面内容的内容。为了解释这一点,我将以Spaces OG为例。
drupal_goto()的一致性。这将胜过任何现有的URL结构。一旦触发了Space,所有的Space配置值都会发挥作用。这将意味着Space的预设默认值(每个Space类型可以有多个默认Space配置)会覆盖Drupal的默认值,而Drupal的默认值又会被专门为Space保存的任何配置覆盖。在Open Atrium的情况下,这包括组颜色、仪表板上的块和启用的功能等很好的东西。
如果用户访问某个特性提供的内容-- Node、View等,则可能会触发与该节点、该视图、任何模块提供的URL相关的任何上下文,并开始使用块和主题来针对该特性的内容定制页面。
下一步
正如我上面提到的,在我看来,你的第一步似乎是尝试查看空间OG,并将其重写为以用户角色为中心,而不是有机组。除了从Spaces OG中进行少量复制和粘贴之外,您不应该直接使用PURL做太多工作。您可能希望在Spaces issue队列中发布这个想法,以便维护者可以看到它并给出指示。
发布于 2010-08-18 22:20:53
我对spaces模块的理解是:
它为features模块(以及由此创建的"features“)提供了一种与站点定义区域集成并在其中可用的方法。开箱即用的内容包括:组织组、分类和用户。有一个API可以定义比这个更多的“空格”。
例如,你可以创建一个图片库的"feature“(带有feature模块)。使用具有有机组的空间,您将能够使每个组具有启用和禁用此功能的能力,并且它将仅在该“空间”(本例中为组)中可用。
在有机组页面中:
组有自己的主题、语言、分类等。集成良好,并依赖于视图模块
因此,在您的情况下,您可以将空间视为使有机组织更灵活的一种方式。正如NoParrots所说,OpenAtrium (http://openatrium.com/)严重依赖于功能/空间/上下文模块,因此这可能是一个审查这些模块如何协同工作的好地方。
编辑:
我发现了一个很棒的视频,它可能会更清楚地解释事情:http://www.archive.org/details/TheHeartOfOpenAtriumContextPurlAndSpaces_782。16:00左右,他开始谈论PURL。
从这个页面(在视频下面)也有一个关于PURL/Context/Spaces的解释,我认为这是非常好的:
发布于 2010-08-18 17:33:44
我建议使用空间或有机组。在开放中庭中,空间被大量使用。一个Development Seed开箱即用的intranet包。Intranet确实需要访问控制和功能可见性的概念,这取决于您所在的部门或角色,因此我相信空间将非常适合您。
当然,也有令人尊敬的有机组织。Spaces是一个比PURL“更高”的概念。Spaces使用上下文和PURL模块BTW。我的直觉是让你使用空间或有机群组。
网上有几个关于空间的视频。看看他们。
https://stackoverflow.com/questions/3509116
复制相似问题