Php Drupal节点保存/编辑

Php Drupal节点保存/编辑,php,drupal,Php,Drupal,我想用我的节点做这个非常特别的事情。这看起来很简单,但可能很难 有两个用户,版主和注册用户 版主和注册用户都可以编辑节点 当版主编辑节点时,将在该节点上进行更改并保存这些更改 当注册用户编辑节点时,编辑表单的加载方式与他们作为主持人的方式完全相同,但当他们保存节点时,将创建一个新节点,而旧节点保持不变 这是Drupal核心的一种可能性。这看起来很简单,但看起来越来越像唯一的解决方案是对内核进行黑客修复,这是我被告知永远不要做的事情。不要对内核进行黑客攻击-drupal有一个很好的特性,叫做hoo

我想用我的节点做这个非常特别的事情。这看起来很简单,但可能很难

有两个用户,版主和注册用户

版主和注册用户都可以编辑节点

当版主编辑节点时,将在该节点上进行更改并保存这些更改

当注册用户编辑节点时,编辑表单的加载方式与他们作为主持人的方式完全相同,但当他们保存节点时,将创建一个新节点,而旧节点保持不变


这是Drupal核心的一种可能性。这看起来很简单,但看起来越来越像唯一的解决方案是对内核进行黑客修复,这是我被告知永远不要做的事情。

不要对内核进行黑客攻击-drupal有一个很好的特性,叫做hooks

首先,您必须创建模块。这不是一件很难做的事…只是谷歌而已,但基本上:

然后,在模块文件中添加钩子函数。即

当您将函数注册为hook\u node\u presave(通过给出确切的名称)时,您的函数将在保存任何类型的节点之前被调用。因此,在该函数中,您可以检查用户是谁、他扮演什么角色、当前保存的内容类型以及下一步应该做什么

如果是版主-什么都不要做

但如果是注册用户,请使用$node变量中提供的数据在此处创建新节点。然后取消当前节点保存: