PURL和/或空格?

时间:2010-08-18 05:05:58

标签: drupal drupal-6

我的网站是为普通用户设置一个部分,为管理员设置一个部分,以及仅供匿名访问者使用的部分。网站的每个部分都需要更改Drupal设置以使用不同的主题,更改主要和&辅助链接,更改使用的块等等。换句话说,用户体验在不同部分之间会发生显着变化。

我可以通过使用Drupal的多站点,共享数据库,并使用settings.php覆盖我需要的变量(即:menu_primary_links_source)来完成我需要的工作。但是,为了从操作的角度来看事情更易于管理,并且购买灵活性,我正在考虑使用PURL API(purl.module)为某些网站部分的URL添加前缀,并让我的主题和自定义模块按照到当前的PURL前缀。

在开始之前,我想确保我没有对Spaces.module进行折扣。 Spaces使用PURL,Features和Context(我目前也在为我的网站使用)。我不完全理解Spaces究竟是如何适应图片的。它会帮助我制作不同的网站部分,每个部分都有特定的配置和行为?或者我最好直接依赖PURL API?

3 个答案:

答案 0 :(得分:7)

Spaces-PURL-Context难题。乐趣。我一直想写这篇长篇大论来完成我的脑袋。

什么是太空?

Spaces是一个为您的网站创建覆盖配置容器的模块。它不是特别关于功能,而是关于能够使用Spaces的任意数量的配置值,包括功能是否处于活动状态。 (Active并不意味着该模块被禁用,只是一些面向功能的东西被淘汰,例如内容类型和空间感知视图。

使用Spaces时,您需要确定要使用的“桶”类型。 Open Atrium使用OG和用户形状的存储桶,您需要的是一种基于用户角色的新型存储桶。为了理智起见,你甚至可能需要创建一个单独的模块,只是为了将用户角色定义为Drupal中更具体的东西,有点像Spaces OG需要依靠有机组来实现许多概念。

什么是上下文?

上下文最终是页面装饰机制。你告诉它关于页面的一些东西,它会相应地修改页面。上下文无法修改URL,反之亦然。功能定义上下文以告诉网站如何为该功能唯一呈现给定页面,上下文和空格或上下文和PURL之间没有直接连接。

什么是PURL?

PURL是一种在网址中粘贴内容并将其保留在那里的方法,直到您完成它们为止。

这是如何融合在一起的

PURL集成的空间基于以下两种方式之一触发:URL或页面中内容的某些内容。为了解释这一点,我将以Spaces OG为例。

  1. 您点击了一个链接。该链接预先构建了一个PURL组件,Spaces OG正在关注线索。如果URL的那一部分对空格有意义,则触发空间。
  2. 除了那些选择退出PURL修改的链接之外的所有链接都会保留PURL URL元素,这意味着Space很满意,并在每次加载页面时重新触发。
  3. Spaces OG知道检查节点的群组隶属关系。如果Spaces可以破解打开一个节点并找到一个组,它将触发该节点的Space,使用PURL的修改版drupal_goto()重定向整个页面以获得URL一致性。这将胜过任何现有的URL结构。
  4. 如果没有URL组件,并且该节点没有组关联,则不会触发Space。
  5. 触发Space后,所有Spaces配置值都会被激活。这将意味着Space的预设默认值(您可以为每种Space类型设置多个默认Space配置)覆盖Drupal的默认值,而默认值则由专门为Space保存的任何配置覆盖。对于Open Atrium,这包括组颜色,仪表板上的块和启用的功能等不错的东西。

    如果用户去访问功能提供的内容 - 节点,视图等,那么与该节点相关的任何上下文,该视图,任何模块提供的URL可能只是被触发,并开始使用阻止和主题定制页面的功能内容。

    后续步骤

    正如我上面提到的,听起来好像你的第一步是尝试查看Spaces OG,并将其重写为以用户角色为中心而不是有机组。除了从Spaces OG进行一点复制和粘贴之外,你不应该直接使用PURL。您可能希望在Spaces问题队列中发布这个想法,以便维护者可以看到它并给出指示。

答案 1 :(得分:1)

我理解空间模块的方式是:

它为功能模块(以及由此创建的“功能”)提供了一种与站点的已定义区域集成并可在其中使用的方法。开箱即用包括:有机组,分类和用户。有一个API来定义比这更多的“空格”。

例如,您可以创建图库的“功能”(使用功能模块)。使用带有机组的空格,您可以让每个组都能够启用和禁用此功能,并且只能在该“空格”(本例中为组)中使用。

从有机组页面:

  

群组获得自己的主题,语言,分类等。集成良好,取决于视图模块

因此,在您的情况下,您可以将空间视为使有机群体更加灵活的一种方式。正如NoParrots所说,OpenAtrium(http://openatrium.com/)大量依赖于功能/空间/上下文模块,因此这可能是审查这些模块如何协同工作的好地方。

修改

我发现了一个很棒的视频,可以更清楚地解释事情:http://www.archive.org/details/TheHeartOfOpenAtriumContextPurlAndSpaces_782。大约16:00他开始谈论PURL。

从这个页面(视频下方)还有一个PURL / Context / Spaces的解释我认为非常好:

  
      
  • Context是一个用于触发页面加载中的被动行为的模块。   控制块可见性,菜单   跟踪,页面类和页面   模板布局就是例子   属于它的东西   管辖权。
  •   
  • PURL是一个用于捕获和抽象请求处理的库   超出了Drupal的核心菜单   系统提供($ _GET ['q'])。   检测请求组件,如   子域,路径前缀,用户代理或   文件扩展名,并维持他们的   存在是其主要作用。
  •   
  • Spaces是一个通用的配置覆盖框架。在   理论它允许你“定制   一切,对于任何事情。“在实践中   它允许像自定义组这样的东西   每个用户的颜色和功能   仪表板和类似多站点的用法   一次Drupal安装。
  •   

答案 2 :(得分:0)

我建议使用Spaces或Organic Groups。 Spaces在Open Atrium中大量使用......开发种子开箱即用的内部网包。内联网确实需要访问控制和功能可见性的概念,具体取决于您拥有的部门或角色,因此我相信Spaces对您非常有利。

当然还有古老的有机组。 Spaces是一个比PURL更高级别的概念。 Spaces使用上下文和PURL模块BTW。我的直觉是你使用太空或有机组。

网上有几个关于太空的视频。检查一下。