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 に答える