Всем доброго дня. Стоит задача - при создании ноды делать видимыми дополнительные поля, в зависимости от выбранного термина из большого словаря с максимальной глубиной 4. Для этой задачи есть замечательные модули Conditional Fields или Conditional Fields States.
Имеем drupal 7.56 и следующую проблему: модули(которые я перепробовал) Hierarchical Select, Simple hierarchical select, Multilevel Select Taxonomy Widget вместе с Conditional Fields или Conditional Fields States отказываются работать. Картина такая - поле с выбором термина (виджет Hierarchical Select, например) - отрабатывает хорошо, термин выбирается из любой глубины, а условие в Conditional Fields или Conditional Fields States не отрабатывает Как только в поле выбора термина меняешь виджет на дефолтный "список выбора" - все работает как часики - но такой вид словаря категорически не устраивает.
Я пробовал разные модули (из тех что перечислил), пробовал модули в песочнице, патчи - ничего не помогло. Поэтому прошу помощи у Вас, дорогие мои... Может кто сталкивался и победил. Если ткнёте носом в рабочий вариант - в долгу не останусь, а то проект встал капитально.
Не работает HS, SHS, MS вместе с Conditional Fields
Главные вкладки
Лучший ответ
Справился своими силами. Обошёлся #states и написанием модуля для вывода иерархии. Вопрос закрыт.
Комментарии
Вообще вся эта структура (HS+Conditional Fields) сильно ограничена и "топорна".
Для подобных целей использую - DDF + #states, что позволяет использовать разные словари, отдельные поля, дефолтный "список выбора", views и любую связь.
Скорей всего дело в событиях js по ним надо дружить HS и CF доки по ним смотрели , события и тригеры для них в js проверяли?
Не проверял, как правильно это сделать ?
В SHS есть такой прикол, что по приходу его аякса не срабатывают бихэйворы. Там это надо вручную ловить. По поводу того, как с этим в HS - не знаю.
Подскажите, как перехватить эти бихэйворы, кусочек кода, если можно. Теперь, для сокрытия\открытия полей использую #states , за что спасибо Adano, но конечной цели так и не достиг - подружить #states с любым модулем отображения иерархии таксономии. Обращаюсь к ним по tid - и ничего не происходит, в то время как в дефолтном варианте, без модулей, все отрабатывает на ура. Мой код со #states:
if ($form_id == 'posts_node_form') {
$form['title']['#states'] = array(
'visible' => array(
':input[name="field_tx_razdel[und]"]' => array('value' => '3163'),
),
);
}
}
В форм альтер лучше добавить свой js, а в нём такой код:
if (settings.url.indexOf('js/shs/json') > 0) {
// Тут ваша логика
}
}
js подключил с вашим кодом. но добиться результата так и не получилось, не могу в разделе "// Тут ваша логика" поставить условие с обращением к термину из списка формы shs т.к. в js не силён если вам не трудно, напишите строчку js с условием: если выбран определенный термин, значит скрывать поле title(например) в форме, а дальше я уже сам допру.
Справился своими силами. Обошёлся #states и написанием модуля для вывода иерархии. Вопрос закрыт.