国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Drupal问题] Drupal实现实体/内容entites/nodes之间关联Link/Relation的教程

[复制链接]
发表于 4-8-2012 15:14 | 显示全部楼层 |阅读模式

背景:内容节点之间的关联应该说是非常重要的一个功能。应该说有不止一种方式来实现,根据具体的需求。

1. References模块

这是被应用的最多的模块,References模块中有个Node Reference功能,可以增加一个Node Reference字段连接到现有的其他节点(Node)上。作者在模块介绍里提到,Relation模块可能会在将来替代本模块(见3)。这里还有一个相关的模块,名字是Corresponding node references,作用则是两个节点之间的关联只需要操作一次即可,会自动维护两个节点之间的reference。

2. Link模块

模块地址:http://drupal.org/project/link

link模块是被用的最多的一种方法。link模块可以为节点增加一个link字段,从而实现从一个节点链接到另一个节点的功能。提供的参数如下:

  • URL (textfield)
  • Title (textfield)
  • Open New Window (checkbox)
  • Add rel=nofollow attribute

问题是,这种关联本质上是一种“手动填写”的“弱关联”,也是“单向”的,就是说如果我要两个节点互相关联,就要在两个节点都操作一次。使用Link模块的站点很多,也保证了这个模块的质量。

3. Relation模块

模块地址:http://drupal.org/project/relation

说Relation模块更”强大“,是因为它建立了一个新的entity专门用来记录所有的Relation(关系),它将节点之间的关联当做entities来进行记录,而我们知道entities增加fields的,所以可以解决更复杂的应用场景。如我们看下例子:

  • CompanyA -> donation123 -> PartyB
  • donations123 -> transaction456 -> BankC

上述关系表示CompanyA向PartB进行了捐赠donation123,然后donation123是通过BankC来完成的,记录这笔交易为transaction456。第一行中donation123是一个relation,由于本身也是一个entity,所以可以再次和别的entity(第二行中格的BankC)进行关联,此时的这个联系则由transaction456进行记录。怎样,强大不?

Relation模块的”问题“在于针对drupal 7 目前只有alpha版本,功能等各方面应该还没定型。


本文选自:Drupal 7 朗歌私坊菜,谢谢! + _: W b* @% a X



|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 2-16-2025 02:11 , Processed in 0.443219 second(s), 121 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表