Drupal自定义节点表单

Fer*_*rry 5 php drupal drupal-fapi

我想为注册用户创建一个输入表单,与管理员的内容创建表单分开.每次提交都将创建多个节点.为了说明这种情况,我将使用内容类型ProjectReview.

项目:标题,描述,所有者,评级.

评论:标题,评论者,项目,难度

我使用CCK模块设置了内容类型及其字段.我想为注册成员创建一个输入表单(非管理员).其字段包括项目名称,描述,所有者,评级,评论,难度.

提交表单后," 项目名称"," 描述"," 所有者 "和" 评级"值将进入新的" 项目"节点,其余部分将进入新的" 审阅"节点.

我想做的另一个定制是评级难度输入字段使用星级评分输入.

实现这一目标的最佳方法是什么?我应该创建自定义模块和自定义表单(任何人都可以指出我如何做到这一点)?或者我可以使用任何模块吗?

谢谢

Hen*_*pel 8

做这件事有很多种方法:

  1. 从头开始做一切:这就是theraravelers建议(+1)归结为 - 自己构建表单,添加自己的验证和提交处理程序,然后提交,构建两个节点对象并保存它们.你将拥有完全的控制/灵活性,但这是相当多的工作,你需要很好地理解Drupals内部工作才能使它正确.

  2. 使用另一个所需的字段"重载"您的一个内容类型并调整"重载"内容类型提交(和部分编辑/显示)逻辑以从其他字段创建其他内容类型,同时将它们隐藏在"重载"上'一个展出和编辑.您可以在此处找到描述此方法的文章.这是比#1更容易的方法,但我认为它有点'hackish',因为内容类型定义与显示不匹配.

  3. #2的较少"hackish"变体将是正常设置您的内容类型,并通过操作编辑和提交过程hook_form_alter().您可以使用与方法#2相同的方法,但不是"先重载"一个节点,而是预先添加其他字段,您只需将它们直接插入编辑表单hook_form_alter(从头开始或通过加载编辑后台中另一个节点的形式,并从中复制相关的字段定义.在表单提交时,您在使用它们构建其他节点时删除这些附加字段.这需要比#2更多的工作和知识,但应该比这更稳定,更容易调整/维护,因为您不必处理内容类型定义与显示不匹配.

此外,您没有指定如何处理现有节点的编辑 - 我建议将节点引用添加到其中一个节点以跟踪它们的关联.这样,如果需要,您还可以添加逻辑以从一个表单编辑两个节点,以及同步删除.