Доработка Конструктора форм

+12
1K
Доработка Конструктора форм

Всем привет.

Сейчас работаю над шаблоном Loading Page и обнаружил что в системном компоненте Конструктор форм, нет возможности вывести форму с помощью шорткода. А ведь часто приходиться какой то красиво оформленный текст вывести рядом с формой.

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

Для этого в папке\system\controllers\forms\hooks\ создаем файл widgets_before_list.php

Открываем этот файл и внутри вставим код

  1. <?php
  2. class onFormsWidgetsBeforeList extends cmsAction {
  3.  
  4. public function run($data){
  5.  
  6. if (empty($this->options['allow_shortcode'])) { return $data; }
  7.  
  8. foreach ($data as $widget) {
  9.  
  10. if (!$widget['controller'] && in_array($widget['name'], array('text', 'html'))) {
  11.  
  12. if (!empty($widget['options']['content']) && stristr($widget['options']['content'], '{forms:', false) !== false) {
  13. $data[$widget['id']]['options']['content'] = $this->parseShortcode($widget['options']['content'], false);
  14. }
  15.  
  16. }
  17. }
  18.  
  19. return $data;
  20.  
  21. }
  22.  
  23. }

Переходим в админку — Компоненты Управление событием — появиться новое событие widgets_before_list, поэтому нажимаем Обновить

На этом всё, в виджетах теперь можете использовать шорткоды, например {forms: системное_имя_формы} при этом в настройках конструктора должна быть включена опция ☑️ Разрешить шорткоды

Скачать

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

Установка обычная, через админку

Прикреплённый файл:
Скачать 2 Кбскачан 48 раз
+1
Capitan Capitan 2 года назад #

А есть пример, а лучше видео как использовать конструктор форм? Спасибо.

+1
My-InstantCMS.Ru My-InstantCMS.Ru 2 года назад #

Лучше спросите, что не получается?

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

Сохраняете, после чего попадает на страницу, где надо создать Поля (как в типе контента)

Создаёте поля, например для обратной связи — это Имя, Почта, Телефон, Комментарий.

И  всё.

Можете эту форму использовать в типах контента, по прямой ссылке, на стороннем сайте или в виджетах, с помощью данной доработки.

0
Mertag93 Mertag93 6 месяцев назад #

Доброго времени суток. Может вопрос не по теме но уже не знаю что курить) Никак не могу понять как добавить клас к полям чтоб их стилизовать. Стоит версия 2.16.3. К кратце била форма в iForm после обновления InstantCMS обратил внимание что начало сыпать спамом доколупался к iForm он уже глух (викидивает ошибку и не видет ту форму которая есть на сайте) Решил сделать форму через Конструктор форм и никак не могу разобраться. Саму форму я сделал она отправляет письма все путем но не могу понять как применить к ней стили прошлой формы.  

+4
Loadырь Loadырь 2 года назад #

Если создать хук с названием render_page, то можно выводить шорткоды в любом html коде и не только в виджетах.

+1
KoRn KoRn 2 года назад #

Спасибо, как раз пригодилось.

Еще от автора

Компонент Находки и потеряшки
С помощью данного компонента можете организовать на сайте Бюро находок, где пользователи пишут о своих находках или потерянных вещах.
Разработка компонента Справочник
Анонс разработки компонента Справочник для InstantCMS2
Разработка компонента Викторина
Обсуждение разработки нового компонента Викторина или Тесты
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.