поле Term reference: вместо названия термина отображать его картинку

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

Аватар пользователя Lex-DRL Lex-DRL 5 марта 2014 в 21:59

Есть словарь "цвета". К нему добавлено поле для иконки-иллюстрации (цветные кляксы). Созданы термины, к ним добавлены соответствующие иконки.

Кроме того, есть другая сущность. В ней создано поле типа "ссылка на термин" (Term Reference), и оно залинковано на этот вот словарь.

Собственно, хочу сделать так, чтобы и в форме редактирования этой сущности, и на странице просмотра - вместо названий терминов ("зелёный", "жёлтый", "красный") отображались вот эти картинки-иконки, пропущенные через определённый "стиль изображения" (image style). В общем, надо сделать нечто вроде этого:

Есть ли готовый модуль для этого? И если нет - в какую сторону копать вообще?

Словарь пополняется пользователями, так что просто вручную перекрасить все термины этого поля через CSS - не вариант.

Решено:

Оказывается, в том самом модуле, откуда скриншот - оно прямо в интерфейсе есть. Модуль Taxonomy Term Reference Tree Widget.
Столько времени им пользуюсь - а не заметил сабжа.

Комментарии

Аватар пользователя VVS VVS 6 марта 2014 в 11:12

Поддерживаю предыдущего оратора, так и делал, когда надо было звёзды картинками в поле отображать. В значения поля писал так:

5|<img src="/images/s5.png">
4|<img src="/images/s4.png">
3|<img src="/images/s3.png">
2|<img src="/images/s2.png">
Аватар пользователя Lex-DRL Lex-DRL 10 ноября 2015 в 11:49

"Brun" wrote:
Можно было сделать просто List поле.

Либо я вас не совсем понял, либо вы меня.
Вся соль - в том, что словарь терминов пополняется пользователями (чтоб могли добавлять дополнительные оттенки, если недостаточно). У термина - есть обязательное поле "иконка". Соответственно, в форме нужно эту самую иконку и выводить вместо текста. Поэтому простой CSS-хак - не канает.

"VVS" wrote:
В значения поля писал так:

Я сделал чуть мудрёнее:
"В настройках отображения" у этого словаря цветов - включил отдельное отображение для токенов. Там - выбрал нужный стиль изображения для иконки.

А в той сущности, которую надо этими цветами классифицировать:
Установил полю term reference виджет Term reference tree
В параметре "Custom Term Label" сделал вот так:
[term:field_icon_cat]<span>[term:name]</span>

Наличие спана позволяет скрыть текст, если рядом есть иконка, либо заменить его некоторой дефолтной иконкой для варианта "не выбрано" в режиме переключателей. Короче, немного CSS - и в результате имеем:
Поле с цветами

Ну и, раз уже освоил методу - тем же способом делаю теперь все флажки/переключатели, которые надо заменить иконко-кнопками. Даже если там по определению не может быть новых вариантов:
Поле для выбора пола

Всё-таки, создать словарь под новое поле, добавить ему поле с иконкой и насоздавать терминов, просто заливая иконки через интерфейс - куда проще и удобнее, чем париться с ручной стилизацией конкретных чекбоксов.