ウェブフォームブロックを作成し、右側のサイドバーのページに割り当てました。そのブロックが正常に送信された後、Webフォームに送信された値を記載したお礼メッセージを、同じページの以前のブロックのどこに表示したいですか。
webformのform settingsにno-redirectオプションを指定しました。
ブロック設定表示モードフォームのみとして指定されたWebフォームブロックの==でも。
しかし、同じページでwebformが正常に送信されたことを示すメッセージにwebformブロックをどのように置き換えればよいでしょうか? Drupalこれを達成する方法があります。設定を見逃していませんか ??
どんな助けでも大歓迎です。事前に感謝します。
ウェブフォームをブロックとして設定している場合は、[管理]> [構造]> [ブロック]に移動できます。ウェブフォームブロックを探します。 Webform: 'name of webform node'のような名前にする必要があります。右側の設定リンクをクリックします。ブロックの編集フォームがロードされたら、セクション確認メッセージを探します。オプションを選択します同じページのブロックに確認ページを表示します(リダイレクトなし)。これで、ブロックからフォームを送信すると、フォームがリダイレクトされ、リロード時に確認メッセージが表示されます。
Webフォームの設定でメッセージの入力が必要になる場合があります。比較できるようにブロック編集ページの画像を添付しました。
これは一種のハックですが、Webformsでネイティブに行う方法を理解できませんでした。この実装では、カスタムモジュールを使用します。
//カスタムモジュールブロックを登録します
function my_module_block_info() {
$blocks = array();
$blocks['my_form'] = array(
'info' => t('My Form Title'),
'cache' => DRUPAL_NO_CACHE,
);
return $blocks;
}
//ブロックのコンテンツを設定します
function download_training_plan_block_view($delta) {
$block = array();
switch ($delta) {
case 'my_form':
$block['subject'] = '';
$block['content'] = my_form_details();
break;
}
return $block;
}
//ブロックのテーマを設定します
function my_form_details() {
return theme('my_form_details');
}
//カスタムテンプレートファイルを使用します。
function download_training_plan_theme() {
$template_path = drupal_get_path('module', 'my_module_template_file') . '/templates';
$theme_hooks = array(
'my_form_details' => array(
'path' => $template_path,
'template' => 'Altered form',
'variables' => array('title' => NULL),
),
);
return $theme_hooks;
}
// webformを使用する場合、フォームを変更してコールバック関数を含めます
function my_module_form_alter(&$form, &$form_state, $form_id) {
if ($form['#node']->title == 'Obstacle Teaser 2018 Data Capture'){
$form['actions']['submit'] = array(
'#type' => 'submit',
'#ajax' => array(
'callback' => 'my_form_callback',
'wrapper' => str_replace('_', '-', $form['#form_id']),
),
'#value' => t('Submit'),
);
}
}
//送信された状態を記憶して非表示のコンテンツを表示するようにCookieを設定します
function my_form_callback(&$form, &$form_state) {
if (!form_get_errors() && $form_state['values']['details']['sid']) {
// Save cookie.
setcookie('is_submitted_cookie', TRUE, REQUEST_TIME + (31556926 * 2), '/');
$commands = array();
$commands[] = ajax_command_invoke('#secret_content', 'show'); //show hidden content
return array('#type' => 'ajax', '#commands' => $commands);
}
return $form;
}
//ファイル内:my_module_template_file.tpl.php
<?php $download_form = module_invoke('webform', 'block_view', 'client-block-999999'); ?> // replace 999999 with nodeID of webform.
<?php if (!empty($download_form['content'])): ?>
<?php print render($download_form['content']); ?>
<?php endif; ?>
<div id="secret_content" style="display:none;"><a href="#">Download content</a></div>
Webform AJAX モジュールを有効にして、インストールします。構成するには:
Webフォームを送信すると、Webフォームの代わりに確認メッセージが表示されます。