如何避免检查特定模块的更新?


35

在当前的项目中,我不得不修补一些模块(节点层次结构,工作台访问权限等)的生命。这些模块现在绝对可以满足项目的需求,并且不太可能随着将来对核心的更新而中断。

话虽如此,当应用程序移交时,客户端将具有对系统的完全(用户1)访问权限,因此,当这些模块具有可用更新时,将警告用户。他们更新它们,无论我恳求他们不要几次(噢,没有客户,生活会多么轻松!)。

是否有一种方法(也许在模块的.info文件中)说服更新管理器不检查这些模块的更新?

编辑

我知道project status url.info文件可用的密钥,所以我想我可以将其设置为不存在的URL,但我宁愿以一种干净的方式进行操作。

Answers:


31

您需要实施hook_update_projects_alter()

在获取数据和比较版本之前,请更改项目列表。

大多数模块将永远不需要实现此挂钩。它用于与更新状态模块进行高级交互:无需凡人。此挂钩的主要用例是将项目添加到列表中,例如,提供有关禁用模块和主题的更新状态数据。贡献模块可能希望从列表中隐藏项目,例如,如果某个特定于站点的模块没有任何正式发行版,则该模块可以从列表中删除自己,以避免出现“找不到可用发行版”警告。可用的更新报告。在极少数情况下,模块可能希望更改与列表中已有项目相关的数据。


19

.info文件中的project密钥由drupal.org上的打包脚本添加,以标识模块来自哪个项目。更新状态模块的主要用途是监视已安装软件包的版本,并在新版本可用时通知管理员。

您只需在.info文件中删除或注释此行,然后Drupal停止检查此模块的更新。


这是因为不正确或其他原因而被否决了吗?
mpdonadio

这是IMO,最好和最简单的方法!
AyeshK 2013年

1
@MPD project在文档中不建议手动使用-这可能是投票的原因。
Mołot

这是我停止检查主题的自定义版本的唯一方法。我当然想以“正确的方式”做到这一点,但这确实可行,并且重复使用了npc的编码,但使用THEMENAME_update_projects_alter却没有。
nedwardss 2014年

3
@nedwardss使用MYMODULE_THEMENAME_仅指示应放置此代码的位置。通过在主题功能文件而不是自定义模块中使用此代码,可以在不同的阶段对其进行处理,并且可能无法按预期执行。主题应包含在$projects变量中。
emc 2015年

14

仅提供代码示例以帮助选择答案:

function MYMODULE_update_projects_alter(&$projects){
    unset($projects['slug_of_the_module_you_want_to_disable']);
    //dsm($projects);  // view a list of projects
}

$projects[]要禁用的变量中输入模块名称。如果不确定什么是子弹(将小写并强调),请使用该dsm()调用或print_r()打印出模块列表。


1
请注意- slug只是模块的技术名称,与模块.info文件的名称相同。因此,您不必转储项目数组,只需查看module文件夹即可。在大多数情况下,名称与模块文件夹的名称相同。
Nux

1
@Nux“大多数情况”在适度与模块名称匹配的情况下适得其反。通过第一次查看和使用子弹,我们既可以培训开发人员,又可以减少可能出现的问题。
emc 2015年

从Drupal的使用的术语是不是蛞蝓,但机器名Slug从某些CMS用作标准URL路径别名
kiamlaluno

12

您可以通过两种方式来实现。

  • drush pm-updatecode --lock = module_to_ignore
  • 使用update_advanced模块。它允许您在模块管理页面上标记要忽略的模块。

尤其是,模块的核心版本中缺少用于忽略某些项目甚至特定发行版的按项目设置。“更新状态高级设置”模块将还原这些设置,并可能最终为核心“更新状态”模块提供其他功能。


drush命令正是我想要的,非常感谢!
2013年

drush help upc将给本作的--lock帮助:--lock = <FOO,酒吧>添加一个持久性的锁在更新过程中移除考虑指定的项目。可以使用--unlock参数删除锁定,也可以通过将项目专门命名为pm-update或pm-updatecode的参数来覆盖锁定。锁定不影响pm下载。
伊兹密尔·拉米雷斯

2

我在模块更新中遇到了同样的问题,我安装了“ 禁用更新”模块似乎运行良好。

这是一个小型管理模块,它允许站点管理员通过在更新设置表单(/ admin / reports / updates / settings)上显示hook_update_projects_alter()的功能来禁用对某些主题和模块的更新检查。它允许任意选择主题和模块,以及自动检测自定义模块,修补的模块和特定于站点的功能模块。

在此处输入图片说明


0

基本上,你做了叉子,对吗?因此,您应该:

  1. 重命名以包含您的叉子标记
  2. 在信息文件中,设置project status url为该模块的存储库。

最后但并非最不重要的一点是,如果不支持它,但不推荐使用其他模块,请考虑要求成为共同维护者并与社区共享您的修补程序。


2
Donschoe:这里的维护者。如果您愿意,我将非常乐意帮助您快速入门。
berkes 2013年
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.