【问题标题】:How do use a custom datatype as a field in drupal 7?如何在 drupal 7 中使用自定义数据类型作为字段?
【发布时间】:2011-05-31 22:00:59
【问题描述】:

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

  1. 餐厅
  2. 菜单
  3. 食谱
  4. 厨师

我想在这个数据厨师 -> 餐厅 -> 菜单 -> 食谱之间创建关联 这样食谱就可以得到厨师的名字和餐厅的地址 而menu可以获取菜谱列表等

在 SQL 领域,我将其称为外键,但我在寻找如何在 drupal 7 中执行此操作时遇到了很多问题。

我怀疑一定有一些我不熟悉的模块或功能。但是 drupal 使用它自己的术语,我想我正在跌倒在我的 google-fu 上

有人知道我在找什么吗?

【问题讨论】:

    标签: drupal drupal-7


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您可能还想查看 Drupal Answers Beta 站点。使用它的人越多,它通过测试版的机会就越大:drupal.stackexchange.com
      猜你喜欢
      • 2020-04-03
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2017-01-17
      • 2013-10-13
      • 1970-01-01
      相关资源
      最近更新 更多