在Drupal CCK节点上的自定义联系表格

问题描述:

对于特定类型的每个节点,在Drupal 6中构建联系表单的最佳方式是什么?我有一些类型为“profile”的电子邮件地址作为字段的CCK节点。我希望为每个节点提供一个联系表单的视图,用户可以填写并使用他们自己的电子邮件地址作为返回地址发送(以便进一步联系异地完成)。在Drupal CCK节点上的自定义联系表格

基本上我只想通过我的网站完成最初的电子邮件联系,当收件人回复时,它只是发送到填写联系表单时发件人输入的地址。

您可能会问自己,为什么我不使用Drupal的个人联系表格。问题在于,我的机构部署Drupal实例的方式使用本地Kerberos登录,它在Drupal中创建的用户帐户没有电子邮件地址。他们只是用用户名得到一个基本的骨架帐户。我并不想强迫用户去编辑他们的用户帐户信息,因为他们很可能不会这样做。

与节点本身没有任何关系,您需要的全部内容是带有字段(from,to,subject,message)的窗体以及此窗体的自定义提交处理程序。 你可以使用forms API在自定义模块中实现所有这些来创建表单并为其编写自定义提交。在这个提交你需要通过drupal_mail()发送电子邮件 - 看看这个,它也提供了例子。 That主题可以帮助你的形式。

然后,如果您需要将一个节点内的这种形式,可以做到以下几点:通过hook_nodeapi ,在“查看”操作,添加表单您之前曾创建过,你可以检查特定NODE_TYPE和利用现有的字段值(你提到了带有电子邮件的cck字段)以预先填写表格。所以每次用户查看节点时,他都会看到这个表单。

作为您的任务的逻辑继续,我建议看看menu system并为节点创建本地任务(选项卡),您将在其中显示电子邮件表单。

一般来说就是这样。当然还有其他的实现方式,但我认为这是最容易理解的。

问候,斯拉娃

+0

谢谢斯拉瓦。我希望我可以在不编写自定义插件的情况下完成此任务,因为我对Drupal非常陌生,但我认为你是对的,这可能是要走的路。我已经开始研究创建模块的过程,并且你在这里解释的大部分内容开始变得更有意义。谢谢。 – John