首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PURL和/或Spaces?

PURL和/或Spaces?
EN

Stack Overflow用户
提问于 2010-08-18 13:05:58
回答 3查看 2.8K关注 0票数 8

我的网站将有一个普通用户的部分,经理的部分,只有匿名访客使用的部分。网站的每个部分都需要更改Drupal设置,以使用不同的主题,更改主要和次要链接,更改使用哪些块,等等。换句话说,用户体验在不同的部分有很大的变化。

通过使用Drupal的多站点共享数据库,并使用settings.php覆盖我需要的变量(即: menu_primary_links_source),我可能可以实现所需的功能。然而,为了从操作的角度使事情更易于管理,并购买灵活性,我正在考虑使用PURL (purl.module)为某些站点部分的URL添加前缀,并使我的主题和自定义模块根据当前的PURL前缀做出反应。

在我开始之前,我想确保我没有打折Spaces.module。Spaces使用了PURL、Feature和Context (我目前也在我的网站上使用它们)。我不完全理解空格是如何与图片相匹配的。它会帮助我创建不同的站点部分,每个部分都有特定的配置和行为吗?还是直接依赖于PURL会更好?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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为例。

  1. 您可以单击链接。这个链接是通过一个PURL组件预先构建的,该组件用于定位OG正在关注的线索。如果这段URL对空间有意义,那么空间就会被触发。
  2. 除了那些选择退出PURL修改的链接之外,所有的链接都会保留PURL URL元素,这意味着空间是愉快的,并且在每次加载页面时都会重新触发。
  3. spaces OG知道检查节点的组从属关系。如果Spaces可以打开一个节点并找到一个组,它将触发该节点的Space,使用PURL的修改版本来重定向整个页面,以保持drupal_goto()的一致性。这将胜过任何现有的URL结构。
  4. 如果没有URL组件,并且节点没有组从属关系,则不会触发任何空格。

一旦触发了Space,所有的Space配置值都会发挥作用。这将意味着Space的预设默认值(每个Space类型可以有多个默认Space配置)会覆盖Drupal的默认值,而Drupal的默认值又会被专门为Space保存的任何配置覆盖。在Open Atrium的情况下,这包括组颜色、仪表板上的块和启用的功能等很好的东西。

如果用户访问某个特性提供的内容-- Node、View等,则可能会触发与该节点、该视图、任何模块提供的URL相关的任何上下文,并开始使用块和主题来针对该特性的内容定制页面。

下一步

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

票数 7
EN

Stack Overflow用户

发布于 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的解释,我认为这是非常好的:

  • Context是一个用于在页面加载中触发反应性行为的模块。控制块可见性、菜单轨迹、页面类和页面模板布局是属于其jurisdiction.
  • PURL的一个库,用于捕获和抽象请求处理,超出了Drupal核心菜单系统提供的范围($_GET'q')。检测请求组件(如子域、路径前缀、用户代理或文件扩展名)并保持其存在是其主要任务。
  • Spaces是一个通用的配置覆盖框架。从理论上讲,它允许你“为任何事情定制一切”。在实践中,它允许自定义组颜色和功能,每个用户仪表板,以及单个Drupal安装的多站点使用。
票数 1
EN

Stack Overflow用户

发布于 2010-08-18 17:33:44

我建议使用空间或有机组。在开放中庭中,空间被大量使用。一个Development Seed开箱即用的intranet包。Intranet确实需要访问控制和功能可见性的概念,这取决于您所在的部门或角色,因此我相信空间将非常适合您。

当然,也有令人尊敬的有机组织。Spaces是一个比PURL“更高”的概念。Spaces使用上下文和PURL模块BTW。我的直觉是让你使用空间或有机群组。

网上有几个关于空间的视频。看看他们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3509116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档