Модуль Webform предоставляет возможность использовать в качестве элементов списка предустановленные значения, которые могут изменяться. Для примера в самом модуле реализованы такие варианты списков как дни недели, список стран и список штатов США. В данной статье я расскажу, как создать свой список, например, нод определенного типа.
Для того чтобы добавить свой список значений в Webform, в своем модуле имплементируем хук hook_webform_select_options_info(). Для примера получим список нод товаров каталога типа с машинным именем product:
В параметре options callback указана функция, которая собственно и формирует список в виде ассоциативного массива, ключами которого будут nid, а значениями – заголовки нод определенного типа:
$products = db_select('node', 'n')
->fields('n', array('nid', 'title'))
->condition('n.type', 'product')
->condition('n.status', 1)
->execute()
->fetchAllKeyed();
return $products;
}
Теперь среди предустановленных списков значений в настройках поля Webform типа «Список» будет доступен список нод Products.
Комментарии
Спасибо, получилось!
Спасибо, получилось!
Подскажите, как сделать чтобы в выпадающем списке был еще и nid ноды рядом с заголовком?
Массив $products содержит в
Массив $products содержит в виде ключей nid, а значений - заголовки нод. Вы можете по нему пробежаться в цикле foreach и сформировать новый массив, где-то так:
$new_products = array();
foreach ($products as $key => $value) {
$new_products[$key] = $value . ' (' . $key . ')';
}
Да, представьте пожалуйста
Да, представьте пожалуйста полный код с выводом nid ноды. Заранее спасибо!
Не получается. Вы можете
Не получается. Вы можете написать код полный? Тут у вас супер хостинг не пропускает код мой.
https://www.ukraine.com.ua/faq/error-424.html#!8