Не работает HS, SHS, MS вместе с Conditional Fields

Аватар пользователя GENbl4 GENbl4 11 декабря 2017 в 19:14

Всем доброго дня. Стоит задача - при создании ноды делать видимыми дополнительные поля, в зависимости от выбранного термина из большого словаря с максимальной глубиной 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 не отрабатывает Sad Как только в поле выбора термина меняешь виджет на дефолтный "список выбора" - все работает как часики - но такой вид словаря категорически не устраивает.
Я пробовал разные модули (из тех что перечислил), пробовал модули в песочнице, патчи - ничего не помогло. Поэтому прошу помощи у Вас, дорогие мои... Может кто сталкивался и победил. Если ткнёте носом в рабочий вариант - в долгу не останусь, а то проект встал капитально.

0 Thanks

Лучший ответ

Аватар пользователя GENbl4 GENbl4 15 декабря 2017 в 22:59

Справился своими силами. Обошёлся #states и написанием модуля для вывода иерархии. Вопрос закрыт.

Комментарии

Аватар пользователя adano adano 11 декабря 2017 в 21:33

Вообще вся эта структура (HS+Conditional Fields) сильно ограничена и "топорна".
Для подобных целей использую - DDF + #states, что позволяет использовать разные словари, отдельные поля, дефолтный "список выбора", views и любую связь.

Аватар пользователя sas@drupal.org sas@drupal.org 12 декабря 2017 в 7:33

Скорей всего дело в событиях js по ним надо дружить HS и CF доки по ним смотрели , события и тригеры для них в js проверяли?

Аватар пользователя GENbl4 GENbl4 12 декабря 2017 в 11:31
<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

Скорей всего дело в событиях js по ним надо дружить HS и CF доки по ним смотрели , события и тригеры для них в js проверяли?

Не проверял, как правильно это сделать ?

Аватар пользователя gun_dose gun_dose 12 декабря 2017 в 11:33

В SHS есть такой прикол, что по приходу его аякса не срабатывают бихэйворы. Там это надо вручную ловить. По поводу того, как с этим в HS - не знаю.

Аватар пользователя GENbl4 GENbl4 13 декабря 2017 в 0:42
gun_dose wrote:

В SHS есть такой прикол, что по приходу его аякса не срабатывают бихэйворы. Там это надо вручную ловить. По поводу того, как с этим в HS - не знаю.

Подскажите, как перехватить эти бихэйворы, кусочек кода, если можно. Теперь, для сокрытия\открытия полей использую #states , за что спасибо Adano, но конечной цели так и не достиг - подружить #states с любым модулем отображения иерархии таксономии. Обращаюсь к ним по tid - и ничего не происходит, в то время как в дефолтном варианте, без модулей, все отрабатывает на ура. Мой код со #states:

function bartik_form_alter(&$form, &$form_state, $form_id) {

  if ($form_id == 'posts_node_form') {
 
  $form['title']['#states'] = array(  
    'visible' => array(
      ':input[name="field_tx_razdel[und]"]' => array('value' => '3163'),
    ),
  );
   }
}

Аватар пользователя gun_dose gun_dose 14 декабря 2017 в 9:05

В форм альтер лучше добавить свой js, а в нём такой код:

$(document).ajaxComplete(function(event, xhr, settings) {
        if (settings.url.indexOf('js/shs/json') > 0) {
          // Тут ваша логика
   }
}
Аватар пользователя GENbl4 GENbl4 14 декабря 2017 в 15:50

js подключил с вашим кодом. но добиться результата так и не получилось, не могу в разделе "// Тут ваша логика" поставить условие с обращением к термину из списка формы shs т.к. в js не силён Sad если вам не трудно, напишите строчку js с условием: если выбран определенный термин, значит скрывать поле title(например) в форме, а дальше я уже сам допру.

Аватар пользователя GENbl4 GENbl4 15 декабря 2017 в 22:59

Справился своими силами. Обошёлся #states и написанием модуля для вывода иерархии. Вопрос закрыт.