我想用我的节点做这件事。看起来很简单,可能很难。
有两个用户,主持人和已注册。
版主和注册用户都可以编辑节点。
当主持人编辑节点时,会对该节点进行更改并保存这些更改。
当注册用户编辑节点时,编辑表单的加载方式与主持人完全相同,但是当他们保存节点时,会创建一个新节点并保持旧节点不变。
这是Drupal核心的可能吗?这似乎应该是容易的事情,但它看起来越来越像是唯一的解决方案是对核心进行hacky修复,这是我被告知永远不会做的事情。
答案 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