Конструктор форм iForms 3. Поле заимствования.

+42
4.13K
Речь в этом посте пойдёт только о платной версии конструктора форм.

Решил немного отойти от типов контента и рассмотреть наиболее сложный пример использования данного типа поля.
Рассмотрим на примере оповещения участников группы о последнем контенте в группе.


Итак, создаём форму. В настройках формы указываем привязку формы к участникам группы.
Иллюстрация
Во вкладке «Внешняя почта» выбираем один из трёх способ оповещения.
Иллюстрация
Использовать отправку на емаил следует с осторожностью. Так как если у вас множество участников, это может привести к всевозможным «санкциям» со стороны почтовых сервисов. А также если есть оповещение о новых сообщениях на сайте, то отправка формы «По e-mail и на сайте» может привести к дублированию отправки писем. Об одном и том же, но в разных видах.

Во вкладке «Разное» пишем текст на кнопке и наш шаблон письма (если выбрана отправка на e-mail).
Иллюстрация
Я пока не знаю, как будут называться поля у формы, поэтому просто выведу весь список полей формы в шаблоне письма фразой "{mail_data}".

Форма готова, теперь собираем набор полей необходимых для сбора информации.

Про обычные поля (строка, текст, селекторы и пр.) я в этой теме писать не буду. Вы сами с ними работаете много и часто. Я лучше подробнее расскажу про тип поля «Поле заимствования». Которое есть только в этой версии конструктора.

Это поле «невидимым» образом «тырит» (от слова «Интырнет») указанную часть содержимого страницы, на которой установлена форма. «Невидимым», потому что данное поле выводится как скрытое. Его не видно в форме, но своё дело оно делает.

Создаём поле. Выбираем тип «Поле заимствования». У него есть две настройки. Первое это «Введите системное имя поля», второе – «Введите css селекторы».
В вашем случае набор полей может быть другим.
В нашем случае мы хотим передать заголовок поста, содержимое поста и автора поста. Пишем в первом поле «title» — это системное название поля заголовка поста. Второе поле оставляем пустым.
Иллюстрация
Сохраняем и создаём другое поле формы. Тут указываем системное название поля текста поста – «content».
Сохраняем и создаём третье поле формы для заимствования автора контента.
С этим будет уже сложнее, так как на нашей странице имя автора выводится мелким шрифтом и не обозначено, как поле.
Иллюстрация
Для того, чтобы наше поле взяло именно это значение со страницы, нам надо его как-то определить. Для этого будем использовать второе поле «Поля заимствования».
Дальнейшие действия уже из области css и «разработчиков/верстальщиков». Простым пользователям тут будет очень тяжело сориентироваться. Но тяжело – не значит невозможно. Поэтому продолжаем.
CSS-селекторы можно посмотреть в файле шаблона. Но для этого надо знать в каком файле и в какой строчке кода искать. Это не для нас, поэтому мы пойдём другим путём.
Можно использовать всякие firebug.
Иллюстрация
Но достаточно открыть нашу страницу (где будет стоять наша форма) и нажать клавиши Ctrl + U. Откроется окно с исходным кодом страницы. Нажимаем Ctrl + F и в поисковом запросе вводим нашего автора (Admin)
Иллюстрация
Получаем,
  1.  
  2. <div class="bar_item bi_user" title="Автор">
  3. <a href="/users/1">Admin</a>
  4. </div>
  5.  
Наш автор прячется в ссылке, которая сидит в блоке с class="bar_item bi_user".
Теперь в нашем поле в форме конструктора так и пишем
«div.bar_item.bi_user a».
Если нам нужна в письме ссылка на профиль автора, то последнюю букву «а» можно удалить.
Иллюстрация
Сохраняем. У нас получилась форма с тремя полями.

Теперь размещаем ее на страницах группы.
Привязка формы к участникам группы и её руководителю возможна только на страницах, где url-адрес содержит слово groups. На других страницах форма не определит её участников и соответственно ничего не отправит им.
Я создал страницу виджетов с положительной маской доступной только на странице контента группы.
Иллюстрация
Добавляем виджет с нашей формой.
Иллюстрация
В виджете во вкладке «Опции» выбираем нашу форму, а во вкладке «Доступ» указываем, кому показывать.

Смотрим, что получилось у нас на сайте.
Иллюстрация
А получилась у нас всего одна кнопка и больше ничего.
Не обращайте внимание на карандаш рядом с кнопкой оповестить. Так теперь выглядит ссылка на редактирование формы. Она видна только администратору.
Конечно, вы можете добавить ещё другие поля в форму, чтобы дополнительно ввести какое-то сообщение.

Нажимаем оповестить и получаем личное сообщение или письмо на емаил
Иллюстрация

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

При нажатии на кнопку «Оповестить» выбираются первые данные из списка контента. Т. е. если у вас на данной странице список из нескольких блоков, где есть нужные вам поля (автор, заголовок, текст и т. п.), то форма выберет только первые значения на странице. Остальные она проигнорирует. Тогда если у вас стоит сортировка – выводить сначала последние записи – то, отправляться формой будет всегда последняя запись. Удобно, если надо сообщить об обновлениях контента на сайте.

Мы с вами рассмотрели только на примере оповещеня участников групп данный функционал конструктора. Поскольку они сложнее всего в определении полей. В типах контента, системные названия полей можно посмотреть в админке, в настройках типа контента, в разделе поля.
Иллюстрация
Есть ещё одна особенность у «Поля заимствования». Если вам нужно получить только число (цифры) из текста, например на странице объявлений указана «Цена: 5000 руб.». То чтобы получить только «5000» без «руб.», надо поставить галочку «Только целые числа» в разделе «Формат поля» у «Поля заимствования».
Иллюстрация
Если вы используете сторонний шаблон, то если форма на вашем сайте некорректно берёт данные со страницы, вам надо поправить «селекторы».
В файле шаблона «Поля заимствования» вашего стороннего шаблона
\templates\шаблон\controllers\iforms\ifields\borrow.tpl.php
в строках 11, 12, 13 расположены коды определения ваших полей selector_field, selector_css и selector_field_css. Вот их и надо будет поправить исходя из особенностей вашего шаблона. В большинстве случаев selector_css на всех сайтах стандарный, его можно оставить таким как есть.

Удачи в экспериментах и работе с вашими пользователями.

З.Ы. В процессе написания поста, выяснилось, что форма не отправляла сообщения на емаил участникам группы, только оповещением на сайте. Поэтому обновление конструктора разошлю чуть позже. Когда доработаю очередную "фишку" (подмена адреса отправителя (От кого:) содержимым поля email) и обработку самих полей в письме.
0
Алексей Т Алексей Т 8 лет назад #
Loadырь супер просто!
Скажи как купить возьму для своего проекта.
+1
Loadырь Loadырь 8 лет назад #
ответил в личку.
+3
WebMan WebMan 8 лет назад #
"Поля заимствования", да ещё и с поиском на странице по селекторам - это мощно! Да и вообще, весь "Конструктор форм", особенно платный, вызывает уважение.
+2
Loadырь Loadырь 8 лет назад #
Да, с каждым днём приближается релиз InstantCMS с встроенным конструктором форм. Приходится что-то изобретать, чтоб хоть чуть-чуть отличаться в лучшую сторону от стантдартного.
+1
Старый балбес Старый балбес 8 лет назад #
ВЫ Loadырь ! КАК ПРО-ФОРМО родитель войдете в историю!
Уважаю правда!
WebMan- более приемлемый термин "Поля заимствования", - наследование.
0
Loadырь Loadырь 8 лет назад #
Уже в истории
+2
lokanaft lokanaft 8 лет назад #
WebMan, ахах, немного в замешательстве по правильному прочтению вашей речи ввиду отсутствия эмоционального окраса) Уж слишком по разному можно понять)
0
Oleg_z75 Oleg_z75 8 лет назад #
Да - это что то! dance
0
kolecha kolecha 3 года назад #
при использовании поля "заимствования" выводит css селекторы (типа "div.field.f_cena .value": ""; )
0
Loadырь Loadырь 3 года назад #
Да, показывает админу, если указано в настройках поля.
0
kolecha kolecha 3 года назад #
а как использовать его значение в математических операциях, если число не заимствует(цену). поле не работает если в нем указано имя поля "заимствования"
0
Loadырь Loadырь 3 года назад #
Если не может получить данные, значит ваш шаблон сильно переделан от дефолта. Используйте css селекторы в этом случае.
0
kolecha kolecha 3 года назад #
ни чего не помогает. при редактировании записи при использовании поля iForms извлекает число, а так при просмотре записи нет.

Еще от автора

Конструктор форм iForms: онлайн калькулятор
Краткая инструкция, по созданию онлайн калькуляторов с помощью конструктора форм.
Конструктор форм iForms. Добавление записи в типы контента гостем.
С момента моей прошлой записи на эту тему прошло больше двух лет. За это время двойка претерпела немало изменений.
Редактор разметки iTiny
Шо! Опять! (c)))
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.