Вы здесь

Как в Hierarchical Select ограничить число выбранных терминов определённого уровня?

0

Есть словарь из двух уровней, типа:
Реклама
- ТВ
- Интернет
- Реклама 3 ...
Доставка
- Авиа
- Авто
- Доставка 3 ...
Оплата
- Карта
- Нал
И т.д.

Создаю поле со ссылкой на этот словарь и иерархическим выбором (через соответствующий модуль) с множественным выбором.
Задача такая: у материала может быть только два термина первого уровня и неограниченное количество терминов второго уровня (иерархически только в рамках значений первого уровня)

Модуль Иерархический выбор позволяет ограничить общее число связанных терминов, но не количество терминов определенных уровней. Его интерфейс не может запретить добавление третьего термина первого уровня.

Есть ли аналогичные модули с указанным функционалом?
Или другие способы решения задачи?
Или надо смириться с этим / лезть в код?

Можно ли это реализовать в Term reference tree?

Версия Drupal: 
7.x
Категория: 
Field APITaxonomy API
Связанные проекты: 
Hierarchical Select
Вопрос задан 01.02.2016 - 13:17

Ответы

0

Так как пользоваться этим будет только контент-манеджер, думаю решить вопрос топорно: перед сохранением ноды считать количество терминов первого (в моем случае) уровня, и если их больше двух разных, то выдавать предупреждение с просьбой исправить.
Еще не реализовывал, так что можно считать это теорией.

Ответ дан 04.02.2016 - 14:59
0

Я бы скриптом прошелся сверху по готовой странице. Два выбранных чекбокса делают неактивными все чекбоксы первого уровня кроме выбранных ранее. При отжимании чекбокса - снова первый уровень чекбоксов становится активным.
Но тут надо ограничить, чтобы у админов в браузере был включен яваскрипт. Иначе это все не будет работать.

Ответ дан 01.02.2016 - 16:10

Там чуть сложнее. Модуль предлагает несколько иной механизм.
Для правильной работы следует не перекрывать чекбокс, а давать выбор только из двух вариантов первого уровня, в случае, если они были уже использованы.
Так или иначе, на данный момент для меня это сложно.

Комментарий оставлен 02.02.2016 - 09:28