Drupal节点保存/编辑

时间:2015-03-16 03:00:25

标签: php drupal

我想用我的节点做这件事。看起来很简单,可能很难。

有两个用户,主持人和已注册。

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

当主持人编辑节点时,会对该节点进行更改并保存这些更改。

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

这是Drupal核心的可能吗?这似乎应该是容易的事情,但它看起来越来越像是唯一的解决方案是对核心进行hacky修复,这是我被告知永远不会做的事情。

1 个答案:

答案 0 :(得分:0)

不要破解核心 - drupal有很好的功能叫做hooks。

首先,您必须创建模块。不难做到......只是谷歌,但基本上:

https://www.drupal.org/developing/modules/7

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

https://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_presave/7

当您注册函数为hook_node_presave(通过给它确切的名称)时,将在保存任何类型的节点之前调用您的函数。因此,在该功能中,您可以检查用户是谁,他有什么角色,当前正在保存什么内容类型以及接下来应该做什么。

如果是主持人 - 不要做任何事情。

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

https://drupal.stackexchange.com/questions/41340/prevent-node-from-being-saved