Передача переменных с одной страницы в веб-форму в drupal

Я пытаюсь передать одну переменную из разных страниц продукта на страницу веб-формы. Каждая страница продукта имеет переменную сеанса, такую ​​как $_SESSION["product_name"] = "Product1";, Точно так же другие страницы продукта имеют $_SESSION["product_name"] = "Product2"; $_SESSION["product_name"] = "Product3";

Мой вопрос заключается в том, как передать эти переменные на другую страницу веб-формы. Я использую модуль «webform», что я хочу сделать, это должно быть <select> тег, и есть варианты, такие как

<select>
<option value="<?php echo $_SESSION["product_name"]; ?>" selected><? php echo $_SESSION["product_name"]; ?></option>
<option value="Product2">Product2</option>
<option value="Product3">Product3</option>
<option value="Product4">Product4</option>
</select>

Проблема в том, что мне некуда разместить эти коды, есть ли способ обойти это или есть какой-нибудь модуль, который я могу использовать для этой проблемы?

0

Решение

Вы можете создать собственный модуль и затем реализовать hook_form__alter ()

Вам нужно будет найти идентификаторы веб-форм, на которые вы хотите настроить таргетинг.

Затем:

function mymodule_form_webform1_alter(&$form, &$form_state) {
array_unshift($form['products']['#options'], array($_SESSION["product_name"] => $_SESSION["product_name"]));
}

или похожие

1

Другие решения

Это может быть способ передачи значения сеанса в значение параметра веб-формы по умолчанию. Я использую Drupal 7, Webform 4. Значения сеанса на разных страницах продукта:

$_SESSION["j_product_name"] = "haha1";
$_SESSION["j_product_name"] = "haha2";

Сначала я создал пользовательский модуль, часть .module (также необходимо создать .info):

<?php
function jay_tokens_token_info() {
$types['jay_token'] = array(
'name' => t("Jay Tokens"),
'description' => t("Jay custom tokens"),
);


$jay_token['product_session'] = array(
'name' => t("Product Name"),
'description' => t("product_name session value"),
);


return array(
'types' => $types,
'tokens' => array(
'jay_token' => $jay_token,
),
);
}

/**
* Implements hook_tokens().
*/
function jay_tokens_tokens($type, $tokens, array $data = array(), array $options = array()) {

$replacements = array();

if ($type == 'jay_token') {
foreach ($tokens as $name => $original) {
switch ($name) {
case 'product_session':
$replacements[$original] = $_SESSION["j_product_name"];
break;

}
}
}

return $replacements;
}
?>

В опциях выбора веб-формы значение по умолчанию должно быть [jay_token:product_session] и варианты должны быть:

haha1|Product1
haha2|Product2
0

По вопросам рекламы [email protected]