如何替换 redmine 插件中的渲染部分?

How can I replace the render partial from my plugin in redmine?

我正在为 Redmine 创建一个插件。我想将 class 添加到问题列表页面(issues/_list.html.erb 视图)的 a 标签中。但我不想更改核心 Redmine 代码。据我了解,挂钩(例如 :view_issues_index_bottom)允许我添加数据但不能替换它们。如何从我的插件替换问题列表页面上的列表部分?

您可以尝试添加 gem deface 并用其功能替换部分视图。 以这个 commit 为例

只需将 issues/_list.html.erb 复制到您的插件视图文件夹 (/plugins/your_plugin/app/views/issues/_list.html.erb) 并根据需要进行编辑。

Redmine 将首先使用您的插件的视图。

作为一般规则,不要只按照已接受答案中的建议覆盖插件中的核心视图。

它使您的用户更难或不可能升级 Redmine,当与另一个 Redmine 版本一起使用而不是您从中查看的版本时,可能会导致错误的行为或错误,并且很可能会阻止您的插件被包含在产品中像 Planio 这样的 Redmine 主机。

相反,要么提供适当的 Redmine 补丁作为插件的一部分(并记录如何应用它),要么通过 Javascript 通过常规挂钩进行任何必要的 DOM 更改。如果觉得hooks少了,也可以提交补丁给Redmine添加新的hooks