Ищу туториал по созданию собственного типа поля

#1 7 марта 2015 в 16:31
Посмотрел как реализованы стандартные поля, поле "Город" и не совсем понял. Шаблон типа поля отвечает за вывод поля при его редактировании или и в просмотре тоже? Я бы хотел реализовать такую схему: создать тип поля, в который пишем число (id записи в справочнике), по которому при просмотре вытаскиваем запись из таблицы и отображаем нужные нам поля.
#2 7 марта 2015 в 18:32
#3 7 марта 2015 в 18:44


В помощь

Soul
Там этот вопрос не поднимался. Photobattles не использует самописные типы полей.
#4 7 марта 2015 в 18:58

Шаблон типа поля отвечает за вывод поля при его редактировании или и в просмотре тоже?

Antuanett
только за вывод при редактировании. За просмотр отвечает функция parse().
#5 7 марта 2015 в 22:03


Шаблон типа поля отвечает за вывод поля при его редактировании или и в просмотре тоже?

Antuanett
только за вывод при редактировании. За просмотр отвечает функция parse().

Loadырь

Спасибо! Может ткнете в пример какой-нибудь?
#7 7 марта 2015 в 22:20


В конструкторе форм смотри файлы поля iforms.php и iforms.tpl.php.

Loadырь

Спасибо! Как всегда — по делу! v
Пошел читать…
#8 8 марта 2015 в 02:06
Немного разобрался, но немного непонятна философия. Вот например хочу добавить собственный тип поля в профайл пользователя. Тип поля содержит целое число, являющееся id записи в справочнике. В parser вытаскиваю все поля записи. Как дальше действовать? Фильтровать вручную это поле в profile_view.tpl получать из parser массив и делать ему отрисовку? Это фен-шуй?
#9 8 марта 2015 в 07:55
Философия примерно такая:

есть поле, у него есть опция — id записи справочника, которое указывается при редактировании поля или записи с этим полем. Она выводится файлом шаблона поля,

функция store() сохраняет его значение в базе данных,

функция parse() получает эту опцию и по ней достаёт из базы ту самую (одну) запись с id = опции id записи справочника. Эта же функция (а точнее вы в этой функции) создаёт html код для вывода результата и возвращает на то место где вызвано это поле.
#10 8 марта 2015 в 12:02
Т.е. создаем в parserе как бы сниппет — готовый кусок html кода для вставки в шаблон? Просто обычно принято работать с html только в tpl, поэтому как-то непривычно…
#11 8 марта 2015 в 12:41
Antuanett, не совсем, parser() должен вернуть готовый кусок html кода. А откуда он его будет брать — решать вам в зависимости от потребностей. Тут либо жёстко прописать его в методе, либо подтягивать из стороннего tpl файла. Конечно если в выводе всего пара строк html кода которые не будут изменяться, то файл шаблона создавать нет необходимости. Если же код нужен массивный или он будет меняться в зависимости от места вызова или других условий, то лучше вынести в отдельный файл.
#12 8 марта 2015 в 12:43
Хмм… У типа поля есть свой шаблон и он, вроде как, отвечает за прорисовку поля при его редактировании… А как подключить шаблон к parser?
#13 8 марта 2015 в 12:50
так ведь это
  1. cmsTemplate::getInstance()->render('путь_к_шаблону', array(параметры));
и ему подобные никто не отменял.
#14 8 марта 2015 в 17:28
Понял. Спасибо!
#15 9 марта 2015 в 00:31
Еще такой вопрос — в связанном с id справочнике есть картинка (ссылка на картинку на стороннем сайте) — хочу ее отображать и интересует — картинка как-то закешируется или всё время будет качаться по ссылке с внешнего сайта?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.