我在drupal 7中有几个自定义数据类型
我想在这个数据厨师 - >餐厅 - >菜单 - >食谱之间创建关联,这样食谱可以获得厨师的名字,餐馆的地址和菜单可以获得食谱清单等
在SQL领域,我称之为外键,但我在drupal 7中发现如何做到这一点有很多问题.
我怀疑必须有一些我不熟悉的模块或功能.但drupal使用它自己的术语,我认为我正在贬低我的google-fu
有谁知道我在找什么?
这些可能不是数据类型,但很可能是内容类型.你在寻找什么
节点之间的关系可以使用References模块(nodereference
Drupal 6的CCK中包含的模块的Drupal 7端口)来实现.这允许您在编辑另一个节点时添加对节点的引用.可以将关系配置为仅允许引用指定类型的节点.这些类型的引用不是双向的,只能(轻松地)从引用者节点导航,而不能从引用的节点导航.在Drupal 6中,Node referrer提供了一个互补字段来双向导航关系.不幸的是,它还没有被移植到Drupal 7.
在不久的将来,可能会弃用引用,以支持实体引用模块.实体引用clains通过视图提供双向查询,并与E ntity API模块正确集成.后者应该确保与模块定义的关系完全(有问题)可导航,并且可以使用实体元数据(Seach API和其他)与模块一起使用.
另一种也使用Entity系统的解决方案是Relation模块.它提供完整的双向关系.这些关系本身就是可现场实体,这意味着您可以为关系添加属性(例如,厨师开始和结束在餐厅工作的日期).
获得关系后,可以通过多种方式在节点页面上显示相关信息.我不知道Relation,但如果References的行为类似于Drupal 6版本,它只允许从直接相关节点显示信息的基础知识.一种解决方案是hook_node_view()
在自定义模块中实现以导航关系,检索不同节点,使用自定义主题钩子格式化收集的信息并将其添加到$node->content
用于呈现.
由于实体引用与视图集成,因此您应该能够构建视图以显示与当前显示的节点相关的节点(使用当前节点作为上下文参数).然后,您可以在节点视图中以编程方式嵌入视图(再次,通过hook_node_view()
)或使用块显示.