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