クリックすると、管理者に電子メールを送信するボタンをページに作成するための最適な方法は何でしょうか。基本的には、プロファイルパーセンテージ完了モジュールを使用しています。ユーザーが100%になったら、プログラムにオプトインするボタンを表示したいと思います(プログラムの意味は、drupalアカウント)
とてもシンプルに見えますが、これで頭を一周することはできません。私は間違いなく、プロファイルが100%の場合にボタンを表示するロジックを追加できます。それは私がどうすればいいかわからないボタンの機能です。 ajaxフックを作成しますか?カスタムモジュールを作成しますか?
何か助けていただければ幸いです!
ありがとう!
これがお役に立てば幸いです。
Drupal 7では、ctoolsを要件に使用できます。
手順
プロフィールページでプロフィールの完全性の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;
}
}