我需要实现的结构:
- 一个节点引用类型person的多个分类术语
- 每个节点由一个人扮演一个特定的角色
- 此角色不同于此分类法术语在不同节点上的角色
- 分类术语不必指定角色,因此角色也可以为空
更好地描述所需行为的示例:
- 电影包含演员的分类术语
- 演员在节点A上扮演"万磁王",在节点B上扮演"甘道夫"
我现在能想到的可能的实现方式:
- 将自定义表nid_tid_role_mapping添加到drupal数据库,其中包含以下字段:nid、tid、role_name
- 钩住node_preseve并获取所有actor分类术语
- 只获取以下格式的"演员姓名(角色)"(例如"伊恩·麦凯伦(万磁王)")
- 将nid、tid和角色添加到表nid_tid_role_mapping
- 添加角色、nid和tid后,将分类术语重新命名为"Actor Name"
- 在节点编辑表单中添加一个特殊的表格,其中列出了该节点的术语名称/角色映射
对我来说,我的方法似乎有点过头了。有没有一个模块可以帮助我?我什么也找不到。。。
创建两个词汇表,一个"actor"词汇表和一个"character"词汇表怎么样。类型"movie"的节点引用"character"(可能是&"actor"),词汇表"character"引用"actor"词汇表。
或者另一种方法是创建节点类型而不是分类术语,并使用"实体引用"模块创建它们之间的关系。如果你想避免得到几个"詹姆斯债券"条款(每个演员一个),这可能是一个更好的解决方案。
在过去,我也尝试过"关系"模块,但当时它对我的需求来说太复杂了,而且不像"实体引用"那样受欢迎