передайте значение электронной почты cck в блок веб-формы


В настоящее время у меня есть 2 веб-формы, отображаемые на странице - они динамически вставляются из node.tpl.php файл.

Однако у меня также есть поле cck на текущем узле для адреса электронной почты - я хотел бы иметь возможность передавать это значение электронной почты непосредственно в поле "Адрес электронной почты" веб-формы.

Это создаст нового получателя электронной почты в зависимости от того, какой узел вы просматривали. Например:

Страница "О нас" содержала поле "Электронная почта: [email protected] " - поэтому веб-форма, загруженная на боковой панели, будет отправлена по этому адресу.

Страница "Местоположение" содержит поле "Электронная почта: [email protected] " - теперь это будет адрес электронной почты, на который будут отправляться любые материалы с этой страницы.

Идея состоит в том, чтобы иметь 1 веб-форму и динамически изменять отправленное электронное письмо на основе поля cck. Возможно ли это вообще?

Спасибо, Гарри.

Author: kiamlaluno, 2011-06-15

2 answers

  1. В своей веб-форме добавьте "поле электронной почты" для получателя (скажем email_recipient).

  2. Перейдите к node/123/webform/emails, чтобы указать получателя в качестве ранее созданного поля.

  3. Создайте hook_form_alter, чтобы указать адрес электронной почты в поле веб-формы.

    <?php
    function CUSTOM_form_alter(&$form, &$form_state, $form_id) {
      //you need to set up a CUSTOM module to store this.
      //use devel with dsm($form); to figure the name of each field
      if ($form['#id'] == 'webform-client-form-123') {
        //load the node from the url
        if (arg(0) == 'node' && is_numeric(arg(1))) {
          $node_email = node_load(arg(1));
          //set your webform field to your email
          $form['submitted']['con_email_recipient']['#default_value'] 
               = $node_email->field_email_recipient[0]['value'];
        }
      }
    }
    ?>
    

Добавьте немного CSS, чтобы скрыть поле, и оно должно работать, код не проверен, но я довольно уверен в шагах, также взгляните на Работа со значениями по умолчанию.

 0
Author: tostinni, 2014-08-29 23:05:21

Я знаю, что это устарело, но на случай, если кто-то еще столкнется с этой проблемой, проблема заключается в следующей строке:

if (arg(0) = 'node' && is_numeric(arg(1))) {

Должно быть

    if (arg(0) == 'node' && is_numeric(arg(1))) {
 0
Author: versantus, 2013-09-26 07:15:37