web-dev-qa-db-ja.com

ユーザー情報をメールアドレスに送信するシンプルなボタン

クリックすると、管理者に電子メールを送信するボタンをページに作成するための最適な方法は何でしょうか。基本的には、プロファイルパーセンテージ完了モジュールを使用しています。ユーザーが100%になったら、プログラムにオプトインするボタンを表示したいと思います(プログラムの意味は、drupalアカウント)

とてもシンプルに見えますが、これで頭を一周することはできません。私は間違いなく、プロファイルが100%の場合にボタンを表示するロジックを追加できます。それは私がどうすればいいかわからないボタンの機能です。 ajaxフックを作成しますか?カスタムモジュールを作成しますか?

何か助けていただければ幸いです!

ありがとう!

1
Aaron Olin

これがお役に立てば幸いです。

Drupal 7では、ctoolsを要件に使用できます。

  • ctoolsリンクをプロファイルの完全性の100%後に作成するだけです

手順

  • プロフィールページでプロフィールの完全性の100%にリンクを作成する

    
    global $user;
    ctools_include('ajax'); // Include the CTools tools that we need.
    $entity_type = 'user';
    $bundle = 'user';
    if (module_exists('pcp')) {//check for 100% completeness
      $check_percentage = pcp_get_complete_percentage_data($entity_type, $bundle, $user);
      if (is_array($check_percentage)) {
        if ($check_percentage['current_percent'] == 100) {//100% of profile completed
          $mail_link = '';
          $mail_link = ctools_ajax_text_button(t("Send Mail"), "send_mail/nojs/$user->uid", t("Send Mail"));
          $link = "<div id='#send-mail-" . $user->uid . "'>"; //must have unique ID for replacement
          $link .= $mail_link;
          $link .= "";
        }
      }
      return $link;
    }
  • コールバック用のメニューを作成する

    
    $items['send_mail/%ctools_js/%'] = array(
      'title' => '',
      'page callback' => 'send_mail_link',
      'page arguments' => array(1,2),
      'access callback' => TRUE,
      'type' => MENU_CALLBACK,
    );....
     return $items;
    
  • メールコールバックを送信する

    
    function send_mail_link($js, $uid) {
      // Include the CTools tools that we need.
      ctools_include('ajax');
      $output = '';
      if(isset($uid)){
         $output .= '<span class="mail-sent">Mail Sent</span>';//without link
        //Code for sending an email to the administrator
        if(/* mail sent */){
           drupal_set_message('mail sent');
        }
      }
      if ($js) {
        $commands = array();
        $commands[] = ajax_command_html("#send-mail-$uid", $output);
        print ajax_render($commands);
        exit;
      }
      else {
        return $output;
      }
    }
    
3
inizio