Drupal如何覆盖别人的功能

时间:2011-08-22 07:57:39

标签: drupal

我下载了某人的Drupal模块(非核心)我在那里更改了1个功能。我希望我的更改不会被未来的模块更新覆盖,但仍然可以享受新的更新。

你是怎么做到的?

感谢。

3 个答案:

答案 0 :(得分:2)

通常,如果您更改了某些内容,则表示您不再拥有原始开发人员可以维护的版本(除非他在他/她的模块中应用相同的更改)。

但你的选择是:

  1. 使原始模块更灵活/扩展它:如果您熟悉Drupal挂钩的概念,您可以使用它们来构建自己的模块和这样可以修改此模块的行为方式。如果它在您需要的功能中没有挂钩,您可以添加它们并要求作者合并更改,以便当有人安装您的模块时,它可以与他/她的模块无缝集成。

  2. 使用版本控制系统:或者,您可以采用其他方式检查更新,而不是Drupal本身。您可以使用Git下载该模块(drupal.org modules目录为您提供Git访问权限),并使用它来将新版本合并到您的代码 - 然后您需要什么是为了更熟悉Git版本控制系统。

答案 1 :(得分:1)

如果您更改的功能修复了某个错误或其他内容,最好创建一个路径并向维护者提出修改。

否则,如果您只是修改功能以帮助您的项目,您还应该创建一个补丁并在每次更新模块后应用它。

另一种解决方案,但不太优雅,它可以克隆模块并使用修改过的函数创建自己的模块(就像这样,你的模块可能没有更新)。

答案 2 :(得分:1)

最好使用钩子,但如果没有其他解决方案......

最简单的解决方案:创建差异,在模块自动更新后手动应用补丁。

http://jungels.net/articles/diff-patch-ten-minutes.html

或者您可以编辑尝试编辑您的模块的信息文件,覆盖版本和放大器的配置。模块的日期戳,以避免自动更新。