Юзкейс: в типе материала имеются три поля: street address (дом и улица, просто текст), city и country (эти два ER на соответствующие справочники). В куче мест нужно вывести полный адрес в формате "street address, city, country", как на страницах нод, так и в разнообразных views. Сейчас это реализовано довольно бардачно: где-то вручную выводятся отдельные поля (а потом секс с css чтоб они были на одной строке и с запятыми между ними), а где-то используется token field от Display Suite. Token field в Display Suite прекрасно работает на страницах нод, но views его не видит. И вообще от тяжёлой и устаревшей Display Suite я бы постепенно отказался, найдя замену тем ее немногочисленным фичам, которые я использую.
Так вот, чем вы в восьмерке/девятке реализуете такие поля? В идеале хотелось бы где-то в одном месте определить "виртуальное" поле Full address, а потом вставлять его и в ноды и во вьюхи.
Комментарии
Нужно написать форматтер поля.
Не, плохая идея. Форматтер одного поля, который полагается на наличие в той же сущности двух других полей, значения которых он должен каким-то образом вытащить и использовать - это не ООП, а порнография.
Ау... Так все значения это разные поля? Тогда нужно написать свое, составное поле, и форматтер к нему.
Или глянуть, может есть еще какие костыли типа коллекций полей, тогда им можно задавать вью-мод, который, в последствии, использовать для вывода.
Есть же addressfield. Возможно, надо только написать к нему отдельный форматтер, чтобы располагать поля в строчку. Ну или вообще написать для адрессфилда форматтер с токеном.
Он, конечно, есть, но у меня city и country - два совершенно кастомных справочника (это даже не таксономия, а ноды) со своими специфическими полями, на которые много что завязано на сайте. Боюсь, что addressfield так не сможет.
Ну и потом, изменение схемы данных на уже работающем и довольно сложном сайте - тот еще головняк, который мне не нужен сейчас. Нужна всего лишь компактная и надежная замена DS token field, которая не встроена в монструозный DS.
Наверное, тебе нужно смотреть в сторону extra field. Ну то бишь это вообще не поле, но оно появляется на странице управления отображением и имеет свои форматтеры. Много слышал об этом в разных чатиках, но сам никогда не делал, хоть и встречал в контрибе.
Никлан даже статью писал https://niklan.net/blog/177
Всем спасибо, подтолкнули мысли в нужном направлении