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

通过使用Drupal的多站点,共享数据库以及使用settings.php覆盖所需的变量(即:menu_primary_links_source),我可能可以满足我的需要。但是,为了从操作的角度使事情更易于管理并获得灵活性,我正在考虑使用PURL API(purl.module)为某些站点部分的URL加上前缀,并让我的主题和自定义模块根据到当前的PURL前缀。

在开始之前,我想确保我没有打折Spaces.module。 Spaces使用PURL,功能和上下文(我目前也在我的网站上使用它们)。我不完全了解Spaces如何完全适合图片。它能帮助我制作不同的站点部分,每个部分具有特定的配置和行为吗?还是我最好直接依赖于PURL API?

最佳答案

Spaces-PURL-Context难题。乐趣。我一直想写这种长篇小说,以完成我的头。

什么是空格?

Spaces是一个模块,可为您的站点创建覆盖配置的容器。这与功能无关,而是与可以使用Spaces的任何数量的配置值有关,包括功能是否处于事件状态。 (事件并不意味着模块被禁用,只是一些面向功能的事物被淘汰,例如内容类型和可识别空间的 View 。

使用空格时,您需要确定要使用哪种类型的“存储桶”。 Open Atrium使用OG和用户形桶,您需要的是一种基于用户角色的新型桶。为了理智起见,您甚至可能需要创建一个单独的模块,以将用户角色定义为Drupal中的一个更具体的事物,就像Spaces OG如何在许多概念上依靠Organic Groups一样。

什么是上下文?

上下文最终是页面装饰机制。您告诉它有关页面的一些信息,它会相应地修改页面。上下文无法修改URL,反之亦然。功能定义了上下文,以告知站点如何为该功能唯一地呈现给定页面,上下文与空间或上下文与PURL之间没有直接联系。

什么是PURL?

PURL是一种将内容粘贴在URL中并将其保留到完成的方法。

这如何粘合在一起

具有PURL集成的空间是基于以下两种情况之一触发的:URL或有关页面内容的内容。为了解释这一点,我将以Spaces OG为例。

  • 您单击一个链接。该链接是使用PURL组件预先构建的,Space OG正在监视其线索。如果该URL对空格有意义,则触发空格。
  • 除了那些选择退出PURL修改的链接之外,所有链接都保留PURL URL元素,这意味着Space很高兴,并在每次页面加载时重新触发。
  • Spaces OG知道要检查节点的组隶属关系。如果Spaces可以破解一个节点并找到一个组,它将使用PURL的改良版drupal_goto()重定向整个页面以实现URL一致性,从而触发该节点的Space。这将胜过任何现有的URL结构。
  • 如果没有URL组件,并且该节点没有组隶属关系,则不会触发任何空间。

  • 触发空格后,所有这些空格配置值都会生效。这将意味着Space的预设默认值(每种空间类型可以有多个默认Space配置)覆盖Drupal的默认值,而Drupal的默认值又会被专门为该Space保存的任何配置所覆盖。对于Open Atrium,这包括诸如组颜色,仪表板上的块和启用的功能之类的好东西。

    如果用户访问某个要素(一个节点,一个 View 等)提供的内容,则可能会触发与该节点,该 View 有关的任何上下文,任何模块提供的URL,并开始使用块和主题来做事。根据功能的内容定制页面。

    下一步

    如上所述,在我看来,您的第一步似乎是尝试查看Spaces OG,并将其重写为围绕User Role(而不是Organic Groups)。除了从Spaces OG进行一些复制和粘贴外,您不必直接对PURL做很多事情。您可能希望在Spaces问题队列中发布该想法,以使维护人员可以看到它并提供指针。

    关于drupal - PURL和/或空格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3509116/

    10-12 21:27