1

早上好,我创建了一个新的内容类型 - 请愿书,最后一步是通过向他们发送链接来验证他们的邮件地址,以证明或从请愿书中删除他们。

我需要获得某种独特的链接,然后将其作为标记化操作邮件发送到表单中提供的邮件帐户。然后,标记化链接应将其邮件地址设置为有效,并且也应该能够取消发布该帖子。

我在这里有点绝望,大方向表示赞赏。

4

1 回答 1

1

这是一个关于如何更改节点内容以及如何在创建节点时发送邮件的示例(但您也可以在填写表单时发送邮件)。您应该能够使其适应您的设置。

节点已创建,默认情况下不发布。在这里,当有人单击邮件中的链接时,我将节点设置为已发布。

创建一个与 nodeapi 对话的自定义模块:

function module_nodeapi($node, $op, $a3 = NULL, $a4 = NULL){

    if($node->type == 'petition'){
        switch ($op) {
            case 'submit':

            case 'insert':
                 $mail = $user->mail;
                 $nodeid = $node->nid;
                     // mail the user using the drupal_send_mail() function
                     // make the link something like: http://web.be/petition/validate/$nodeid/$mail
                     // drupal_set_message('thank you for validating the petition');
            case 'update':
            break;
        }
    }

所以链接的一个例子是http://web.be/petition/validate/20/test@test.com。接下来要做的是使用 hook_menu 获取链接及其变量(也在您的自定义模块中):

function module_menu(){
    $items['petition/valid/%/%'] = array(
        'title' => 'Validated your petition-entry',
        'page callback' => 'module_validate_petition',
        'page arguments' => array(1,2),
        'access arguments' => array('access content'),
        'type' => MENU_CALLBACK,
    );
}

function module_validate_petition($nid, $mail){
    // load the node
    $node = node_load($nid);
    // set to published
    $node->status = 1;
    // save the node
    node_save($node);
}
于 2010-08-27T12:45:53.457 回答