如何解决两个功能模块之间的冲突?


16

我有两种具有各种菜单,视图,菜单等的内容类型,它们打包为两个功能自定义模块。这两种内容类型都使用分类法,并且使用数据库中的几个相同字段。当我将这些功能模块加载到新站点中时,它们在这些通用字段和词汇表上显示出彼此之间的冲突,并且我不确定解决冲突的最佳方法是什么。

尽管功能模块旨在协同工作,但它们不必同时存在于同一站点上。每个也可以与其他不同功能一起使用。它们都使用分类法和字段来进行视图过滤等,因此它们每个都在其功能定义中包括这些组件是有意义的。我是不是该:

  • 从一个模块中删除字段和分类法,并声明对另一个模块的依赖关系?这是不希望的,因为彼此之间可以互不相干。
  • 制作功能的两个版本,一个用于独立使用,一个用于协作。
  • 将字段和分类法定义为单独的功能?
  • 忽略冲突并启用模块?(如果我愿意,他们俩将共享这个领域吗?)
  • 另一个解决方案?

我尚未对此进行测试,但是禁用或卸载两个功能模块之一会从数据库中删除字段,即使另一个模块需要它也是如此吗?

Answers:


16

创建第三个功能,定义其他两个独立功能使用的组件(*)。

在其他两个功能中,删除第三个功能现在要求的组件,而是将第三个功能列为依赖项。

echo'digraph G {label =“ Dependency Graph”;  结构性[label =“ Structual Feature \ n(Fields,Taxonomy)”]]; “功能A \ n(内容类型)”->结构; “功能B \ n(内容类型)”->结构; };'  |  点-Tpng> dependency.png

(*)但是,在Drupal 7的功能中,尚未实现此功能-请参阅http://drupal.org/node/1064472,并在那里查看建议的代码。—该补丁已提交给功能7.x-2.x。


1
是的,那肯定可以。尽管如果这是“功能”强制用户执行的操作,则这是一个不太好的解决方案。功能提供了打包功能的功能,然后让我们无法完全完成功能。单独的功能模块之间的共享字段应该没有问题。谢谢
Ashlar

3
@Ashlar:但是如果前两个功能的每个字段的定义不同,该怎么办?如何解决冲突的定义?同样,通常,对同一信息具有多个权威定义也是有问题的。共享字段不是问题,但是有多个权限指定这些字段是什么是问题。
smokris

2
不,我是说你应该定义字段一次(从而定义字段的可能值一次)的结构特征-在每个内容类型特点和参考该领域。(确认...我只是意识到我的建议是假设已应用drupal.org/node/1064472上的补丁,我忘了提及它。已编辑的答案。)
smokris

1
谢谢smokris。该链接非常有帮助。我对如何处理字段/实例有一个错误的假设。您的回答现在对我来说很有意义,而且到补丁的链接将使我免于拔出头发:)
Ashlar 2012年

1
提到的D7功能补丁现已提交至dev drupal.org/node/1064472#comment-7235792
danbohea 2013年

1

这个解决方案对我确实很有效,与创建第三个功能(将在另一个不相关的站点中创建孤立字段)相比,将其导出到各个站点要强大得多。

http://drupal.org/node/1698290


0

对我有用的解决方案是将两个功能附加到一个较大的功能中,从而解决了冲突。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.