如何在drupal 7中使用自定义数据类型作为字段?

时间:2011-05-31 22:01:00

标签: drupal drupal-7

我在drupal 7中有几种自定义数据类型

  1. 餐厅
  2. 菜单
  3. 配方
  4. 厨师
  5. 我想在这个数据厨师之间创建关联 - >餐厅 - >菜单 - >食谱 这样食谱就可以得到厨师的名字和餐馆的地址 和菜单可以获得食谱等列表

    在SQL领域,我称之为外键,但我在drupal 7中找到了如何做到这一点时遇到了很多问题。

    我怀疑必须有一些我不熟悉的模块或功能。但drupal使用它自己的术语,我认为我正在贬低我的google-fu

    谁知道我在找什么?

2 个答案:

答案 0 :(得分:5)

这些可能不是数据类型,但最有可能是 content types 。您正在寻找的是

  • 将一种内容类型的节点(即内容)与另一种内容的节点(厨师到餐馆,菜单到餐馆,食谱到菜单等)联系起来的方法。
  • 在显示特定节点时显示来自相关节点(直接或间接关系)的信息的方法。

可以使用References模块(Drupal 6的CCK中包含的nodereference模块的Drupal 7端口)实现节点之间的关系。这允许您在编辑另一个节点时添加对节点的引用。可以将关系配置为仅允许引用指定类型的节点。这些类型的引用不是双向的,只能(轻松地)从引用者节点导航,而不能从引用的节点导航。在Drupal 6中,Node referrer提供了一个互补的领域来双向导航关系。不幸的是,它还没有ported to Drupal 7

在不久的将来,可能会弃用引用,以支持Entity reference模块。实体引用clains通过视图提供双向查询,并与E ntity API模块正确集成。后者应该确保与模块定义的关系完全(有问题)可导航,并且可以使用实体元数据(Seach API和其他)与模块一起使用。

另一个也使用Entity系统的解决方案是Relation模块。它提供完整的双向关系。这些关系本身就是可实现的实体,这意味着您可以为关系添加属性(例如,厨师开始和结束在餐厅工作的日期)。

获得关系后,有多种方法可以在节点页面上显示相关信息。我不知道Relation,但如果References的行为类似于Drupal 6版本,它只允许从直接相关节点显示信息的基础知识。一种解决方案是在自定义模块中实现hook_node_view()以导航关系,检索不同的节点,使用自定义theme hook格式化收集的信息,并将其添加到$node->content进行渲染。 / p>

由于Entity引用与视图集成,您应该能够构建视图以显示与当前显示的节点相关的节点(使用当前节点作为上下文参数)。然后,您可以在节点视图中以编程方式嵌入视图(同样,通过hook_node_view())或使用块显示。

答案 1 :(得分:2)

在Drupal 6中,您将使用名为Node Reference的CCK项目的子模块。节点引用是指向另一个节点的一种内容类型中的字段。在Drupal 7中,由于CCK的大部分功能已经转移到核心,因此节点参考子模块现在是References项目的一部分。