[Решено] Вывод списка терминов ноды в Webform

Главные вкладки

Аватар пользователя misterBald misterBald 23 ноября 2014 в 16:01

Есть материал типа Image. У него есть поле Things, которое содержит несколько терминов словаря Things.
На странице материала стоит блок Webform. Надо чтобы в этом блоке в виде выпадающего списка отобразились термины, присвоенные данному материалу.
То есть набор параметров в списке webform должен меняться в зависимости от материала.
Как такое организовать?

P.S. Webform Term Options не подходит, т.к. выгружает весь список терминов из словаря. Точнее должен выгружать, у меня ничего не выгружает, хотя стандартные списки работают.

Комментарии

Аватар пользователя misterBald misterBald 24 ноября 2014 в 22:08

Так и не смог решить проблему на уровне модулей или хуков.
Пошел другим путем: "отсечь все лишнее".

1) В вебформе в поле типа "Элементы списка" (select) вывожу все термины словаря в выпадающий список. Их немного, поэтому написал вручную, но можно попользовать Webform Term Options (у меня не работает) или http://www.drupal.ru/node/74971. Самому полю назначил класс things-available
2) Сделал вьюху (views), которая выводит термины данного материала через запятую. Вывод сделал в виде простого текста в поле с классом things-should-be-available и element-invisible (чтобы не мешалось на странице). Вьюха выдает:

Толстовка, Футболка, Футболка-поло

3) За 500 рублей заказал очень простой java-script, который сравнивает содержимое выпадающего списка и div'а, который вывел вьюс. Из списка удаляются все варианты, которых нет в div.

Код скрипта:

jQuery(function($) {
var words = $('.things-should-be-available').html().split(','),
$options = $('select.things-available option');

$.each(words, function(i, word) {
words[i] = word.trim().toLowerCase();
});

$options.each(function(j, option) {
var $option = $(option);
$option.val() != '' && words.indexOf($option.val().toLowerCase()) === -1 && $option.remove();
});
});

Кусок html для проверки:

<div class="field-content things-should-be-available element-invisible">Толстовка, Футболка-поло, Футболка</div>
<select class=" things-available form-select" id="edit-submitted-na-chem-pechataem" name="submitted[na_chem_pechataem]">
        <option value="" selected="selected">- Не указано -</option>
        <option value="Толстовка">Толстовка</option>
        <option value="Куртка">Куртка</option>
        <option value="Футболка">Футболка</option>
        <option value="Футболка-поло">Футболка-поло</option>
        <option value="Майка">Майка</option>
</select>

Еще можно посмотреть тут: http://jsfiddle.net/e04z26qu/1/