А как нынче модно создавать кастомные токенизированные поля?

Аватар пользователя marassa marassa 6 февраля 2021 в 17:35

Юзкейс: в типе материала имеются три поля: street address (дом и улица, просто текст), city и country (эти два ER на соответствующие справочники). В куче мест нужно вывести полный адрес в формате "street address, city, country", как на страницах нод, так и в разнообразных views. Сейчас это реализовано довольно бардачно: где-то вручную выводятся отдельные поля (а потом секс с css чтоб они были на одной строке и с запятыми между ними), а где-то используется token field от Display Suite. Token field в Display Suite прекрасно работает на страницах нод, но views его не видит. И вообще от тяжёлой и устаревшей Display Suite я бы постепенно отказался, найдя замену тем ее немногочисленным фичам, которые я использую.
Так вот, чем вы в восьмерке/девятке реализуете такие поля? В идеале хотелось бы где-то в одном месте определить "виртуальное" поле Full address, а потом вставлять его и в ноды и во вьюхи.

Комментарии

Аватар пользователя marassa marassa 6 февраля 2021 в 22:27

Не, плохая идея. Форматтер одного поля, который полагается на наличие в той же сущности двух других полей, значения которых он должен каким-то образом вытащить и использовать - это не ООП, а порнография.

Аватар пользователя bumble bumble 6 февраля 2021 в 22:30

Ау... Так все значения это разные поля? Тогда нужно написать свое, составное поле, и форматтер к нему.

Или глянуть, может есть еще какие костыли типа коллекций полей, тогда им можно задавать вью-мод, который, в последствии, использовать для вывода.

Аватар пользователя gun_dose gun_dose 7 февраля 2021 в 11:23

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

Аватар пользователя marassa marassa 7 февраля 2021 в 11:49

gun_dose wrote: Есть же addressfield

Он, конечно, есть, но у меня city и country - два совершенно кастомных справочника (это даже не таксономия, а ноды) со своими специфическими полями, на которые много что завязано на сайте. Боюсь, что addressfield так не сможет.
Ну и потом, изменение схемы данных на уже работающем и довольно сложном сайте - тот еще головняк, который мне не нужен сейчас. Нужна всего лишь компактная и надежная замена DS token field, которая не встроена в монструозный DS.

Аватар пользователя gun_dose gun_dose 7 февраля 2021 в 13:15
1

Наверное, тебе нужно смотреть в сторону extra field. Ну то бишь это вообще не поле, но оно появляется на странице управления отображением и имеет свои форматтеры. Много слышал об этом в разных чатиках, но сам никогда не делал, хоть и встречал в контрибе.