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

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

Всем привет.

Сейчас работаю над шаблоном 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 Кбскачан 42 раза
+1
Capitan Capitan 1 год назад #

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

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

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

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

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

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

И  всё.

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

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

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

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

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

Еще от автора

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