如何在 Drupal 中创建具有三个细节层的时间线?

Posted

技术标签:

【中文标题】如何在 Drupal 中创建具有三个细节层的时间线?【英文标题】:How to create a timeline in Drupal with three detail layers? 【发布时间】:2010-08-01 18:43:26 【问题描述】:

现在我可以看到可能有几种方法可以实现我需要实现的目标,而不是在遇到冰山时寻求帮助,所以我征求您的意见:您会怎么做?

我需要在 Drupal 中创建一个时间线。时间线有 3 层:十年(30 年代、40 年代、50 年代……)、年份和事件。

我将记录某一年发生的几件事。我每年将举办 2、3 或 4 场活动,但我没有每个活动的确切日期。我只需要将这些事件与特定年份联系起来,然后将这些年份与相应的十年联系起来。导航将从全局(十年)到具体(事件)。我可能会使用一些 jQuery 来折叠一个显示或隐藏其中十年的十年块(十个小框)当点击这些框时,用户将首先被带到详细的年份页面,然后到详细的事件页面,以防万一他们点击其中一个事件。

到目前为止,我的做法是:

1) 创建事件内容类型。这里的字段之一是节点引用。这使我可以将一个事件与其对应的年份联系起来。 2) 年份内容类型。这是一个简单的内容类型,由事件引用。我将每年创建一个节点(1930、1931、1932、1933 ...) 3) 对十年层使用分类法,以便注册的每一年都与注册的十年相关联(30 年代、40 年代、50 年代、60 年代、70 年代等)。

嗯,问题在于呈现这些信息。用 View 对其建模似乎很棘手。我想到的是:

1) 第一种方法 - 查询年份并按十年分组。然后我在这里有两个选择: 1.1)将它们链接到它们的完整年份节点。问题:如果我这样做,我无法从年份节点中提取相关事件。因为我的节点引用不是指向事件的年份,而是指向节点的事件。您认为我应该将节点引用放在年份内容类型而不是事件内容类型中吗? 1.2)我不知道这是否可能:不是链接到年份节点,而是使用 AJAX 在当前显示年份信息及其相关事件的当前窗口之上打开一个虚假窗口。我不知道这是否可能。

2) 第二种方法 - 我可以创建一个如下所示的分类法: 30 年代:1930 | 1931 | 1932 | 1933 | 1934 | ...

40 年代:1940 | 1941 | 1942 | 1943 | 1944 | ...

在这种情况下,我会放弃年份内容类型,并将事件直接链接到它们的年份和十年。我可能会失去灵活性,因为分类法只给了我一个标题和一个描述字段,而我可以拥有更多的年份内容类型

3) 第三种方法(菜单层次结构) - 我可以简单地创建十年,十年下的年份节点(将相应的十年设置为父菜单项),以及年份下的事件节点(将相应的年份设置为父菜单项) .我不希望子子项显示在常规菜单中,但这是我可以解决的问题。我可以只为这个层次结构创建一个非常具体的菜单。这会自动给我面包屑(如果我使用面包屑模块​​),这会很棒。但是,我怎样才能显示来自父节点的子页面?我的意思是,我怎样才能显示一年的事件列表?使用思考?这可能无法显示子页面列表。但我突然想到我可以创建一个视图块,它获取一个参数并显示链接到当前节点的节点......

无论如何,如果这太大了,我很抱歉。我不期望任何详细的答案,但任何帮助将不胜感激。我用 Drupal 做了一些事情,但这是我需要构建的第一个复杂结构。如果您知道任何涉及这种多层结构的博客,我感谢您的帮助。谢谢。

【问题讨论】:

【参考方案1】:

试试http://drupal.org/project/timeline

它有很多有趣的功能。可能无法满足您的所有要求,但它是一个非常酷的模块。我用过。

【讨论】:

非常感谢您分享这个。【参考方案2】:

您试图解决的问题中可能有一些微妙的细节没有引起我的注意,但如果我是您,我会尽量将表示层与其他部分分开

第一个问题是:为什么需要年份作为节点?年份是否会包含某种信息本身或者它们只是一个集合事件?从你的问题来看,我理解是后者,所以我会排除有年份作为节点。

如果我没记错的话,事件发生的年份是您想要存储在数据库中的唯一附加信息,而几十年只是根据该信息对节点进行分组的一种方式, 通过使用某种逻辑(在本例中为 year/10 的整数部分)。

您可以通过两种方式实现这一点,IMO。

    通过分层分类法。 通过创建一个名为“event”的节点类型,其中包含一个字段“year”,然后通过视图组织所有其余部分。

第一个选项很简单 [也许就是您所描述的选项 #2]。您不一定会失去灵活性,因为您可以在模板级别呈现自动创建的信息(例如,将图片命名为要放在页面中的年份或十年)或将人工生成的图片链接到具有视图的给定页面[例如您可以使用与“事件”相同的分类法标记类型为“年份描述”的节点,因此当您使用分类术语(1945)进行过滤时,您将获得节点列表“事件”和一个节点“年份描述”在您的结果中,模板/视图将负责以不同的方式使用不同的节点类型]

第二个选项不那么简单,但给你更多的灵活性。您必须直接编写自己的“node_event 模块”,而不是使用 CCK,在那里也将您的字段描述为视图。然后,您将使用 Views UI 来组装您的页面 [按十年划分的节点、十年菜单、过滤器...])。

我很确定您也可以通过使用 CCK + Views UI 来实现与选项 #2 类似的功能(因此,无需编写代码),但对于这种帮助,也许 SO 不是最好的提问地点,你可能应该在一些 Drupal 相关的论坛上提问。

HTH!

【讨论】:

以上是关于如何在 Drupal 中创建具有三个细节层的时间线?的主要内容,如果未能解决你的问题,请参考以下文章

在 Drupal 7/Views 3 中创建相似节点列表

如何在 Drupal 7 中创建一个仅显示基于当前用户字段的过滤列表的视图

你能在 Drupal 中创建自己的 Hook 吗?

如何在 Pandas 中创建具有自己级别的类别?

如何在 yii 框架中创建主题?

我需要帮助在处理中创建下摆线