Расширения

Инструкция RSForm Pro (часть 3). Формы Joomla 3

 

RSForm Pro – компонент для создания форм Joomla с богатым функционалом (более 20 типов полей) и множеством настроек.

Видео-инструкция по RSForm Pro

 

  • Префикс загружаемого файла – c 00:00.
  • Ограничение выбора даты в календаре – c 03:19.
  • Правила проверки дополнительных символов – c 04:22.
  • Ссылка на профиль пользователя в Community Builder – c 06:01.
  • Проблема с кодировкой в CSV файле – c 08:02.
  • Загруженное изображение в сообщении о благодарности – c 10:21.
  • Добавление условий и терминов – c 12:43.
  • Добавление появляющегося изображения при отправке формы – c 15:19.

Видео лучше просматривать с качеством 720 HD. Этот и другие видео уроки Вы можете найти на каналах сайта Aleksius.com в YouTube и Mail.ru.

В предыдущей статье «Инструкция RSForm Pro (часть 2). Конструктор форм Joomla 3» мы рассмотрели некоторые часто задаваемые вопросы с сайта разработчика компонента. В этой части продолжим начатое.

В данной статье Вы сможете ознакомиться с полным перечнем ответов на вопросы касательно работы с компонентом форм Joomla RSForm Pro.

В данной инструкции рассмотрена последняя, на момент её написания (25.07.2017), русскоязычная версия RSForm Pro 1.52.14, Joomla 3.7.3. Шаблон фронтальной части сайта – RSBaraka 1.0.3, шаблон административной части сайта – Isis 1.0.0.

Внизу данной статьи, над комментариями, найдёте архив с примерами из этой инструкции, которые можно импортировать на свой сайт при помощи раздела Архивация / Восстановление в компоненте RSForm Pro. Нужно извлечь скачанный Вами ZIP-архив и загружать себе в  RSForm архив в формате «.tar».

Не работает отправка писем в Joomla 3.2.0

В предыдущей статье был рассмотрен ряд причин и способов решения проблем, связанных с почтой. Но если Вы обновили свою Joomla с более старой до версии 3.2.0 или более новой, а у Вас перестали отправляться письма, то перейдите в Система – Общие настройки – Сервер и проверьте, чтобы для опции Отправка почты было выбрано Да.

Префикс загружаемого файла

В компоненте форм Joomla есть поле тип Загрузка файла. Оно позволяет отправлять файлы через форму. В управлении отправленными данными Вы можете видеть, что к исходному имени файла добавляется специальный префикс (рисунок ниже). Это делается с целью избежать дублирования в именах файлов.

RSForm
RSForm

Есть возможность управления этим префиксом. Для этого перейдите в настройки поля на вкладку Атрибуты (рисунок ниже). Если в поле Префикс файла ничего нет, то префикс формируется автоматически (случайно).

Можно ввести туда свой собственный текст (лучше использовать английские буквы, цифры, знак тире или нижнего подчёркивания). Лучше, чтобы в конце введённого Вами префикса было тире или знак нижнего подчёркивания, например, «primer-prefiksa-» (без кавычек).

Если нужно убрать префикс вообще, то введите в поле Префикс файла следующий код:

//<code>
return '';
//</code>
Форма Joomla 3
Форма Joomla 3

Можно настроить генерацию префикса на основании введённых пользователем данных в определённое поле. Для этого в поле Префикс файла следующий код:

//<code>
return $_POST['form']['vashe_ima'].'_';
//</code>

Где «vashe_ima» – название поля формы тип Текстовое поле. На рисунке ниже это поле отмечено как «Ваше имя».

Создание форм Joomla
Создание форм Joomla

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

Имена отправленных файлов
Имена отправленных файлов

Ограничение выбора даты в календаре

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

Для этого в настройках поля календаря на вкладке Атрибуты в поле Минимальная дата (мм/дд/гггг) введите следующий код:

//<code>
return date('m/d/Y');
//</code>

А в поле Максимальная дата (мм/дд/гггг) – такой код (рисунок ниже).

//<code>
return date('m/d/Y', strtotime("+2 days"));
//</code>
Компонент форм Joomla
Компонент форм Joomla

Где «+2 days» – число дней, начиная с текущего дня.

В результате во фронтальной части сайта пользователь сможет выбрать 25.07.2017 (так как это текущий день) и ещё 26 и 27 июля 2017 года (рисунок ниже).

Календарь
Календарь

Правила проверки дополнительных символов

В полях тип Текстовое поле и Текстовая область можно включить проверку вводимых данных. Например, есть правила проверки Буквы, Цифры, Буквы и цифры (рисунок ниже), но при этом, по умолчанию, пользователь не сможет отправить данные, содержащие специальные символы.

Правила проверки
Правила проверки

Рассмотрим пример с текстовым полем для телефона. Включив правило Цифры, Вы можете усложнить заполнение формы людям, которые вводят телефон в виде: «+38 (095) 123-24-56» (без кавычек). Когда цифры набирают с пробелами, круглыми скобками, дефисами, знаком плюс. Чтобы добавить эти символы в разращённые для ввода в поле, в настройках текстового поля на вкладе Проверка задайте их через запятую в поле Дополнительно принимаемые символы (рисунок выше) – «+,(,),-,» (без кавычек).

Ссылка на профиль пользователя в Community Builder

Если на своём сайте Вы используете компонент социальной сети Community Builder, то можно будет добавить ссылку на страницу отправленных данных формы (тип пункта меню RSForm! Pro – Показать отправленные данные) или в модуль «RSForm! Pro Module List». По нажатию на эту ссылку будет произведён переход в профиль Community Builder того пользователя, который отправил данные из формы. Обязательным условием является то, что при отправке данных формы пользователь уже должен был войти на сайт со своим логином и паролем.

Чтобы разместить ссылку, перейдите в менеджере меню в нужное Вам меню, найдите\создайте пункт меню тип Показать отправленные данные и в его настройках на вкладке Параметры добавьте следующую строку в поле Макет строки и\или в поле Подробный макет.

<a href="/index.php?option=com_comprofiler&task=userProfile&user={global:userid}">Перейти на страницу пользователя, отправившего данные</a>

В результате, на странице появится ссылка (рисунок ниже), ведущая на профиль пользователя Community Builder, отправившего данные через форму RSForm.

Ссылка на профиль пользователя в Community Builder
Ссылка на профиль пользователя в Community Builder

Вместо текста «Перейти на страницу пользователя, отправившего данные» можно использовать другой текст и даже заполнители полей, например, «<a href="/index.php?option=com_comprofiler&task=userProfile&user={global:userid}">{vashe_imya:value}</a>», где «{vashe_imya:value}» – заполнитель поля ввода имени пользователя на форме RSForm.

При написании статьи тестировал в Community Builder 2.1.2.

Не работает форма при включённом кэше

При вставке формы на страницу при помощи плагина «Content - RSForm! Pro» и включённом кэше Joomla, скорее всего, форма не будет работать. Она будет отображаться, но не будет функционировать. Для решения этой проблемы придётся полностью отключить кэширование на сайте. Для этого перейдите в Система – Общие настройки – Система и для опции Системный кэш выберите Кэширование отключено.

Также перейдите в Расширения – Плагины, найдите плагин «Система - Кэш» и убедитесь, что он выключен. После этого перейдите в Система – Очистить весь кэш и удалите весь кэш.

Если Вы хотите оставить кэширование и использовать формы RSForm, то создавайте отдельные страницы для форм при помощи пунктов меню тип RSForm! Pro – Форма. Или воспользуйтесь сторонними компонентами кэширования, которые помогут задавать исключения из кэширования для отдельных страниц, модулей, позиций шаблона и т.д.. Например, JotCache или Speed Cache. На одном из своих сайтов я именно так и поступил. Форма вставлена на страницу через модуль, а в настройках JotCache задано исключение позиции шаблона, где находится модуль формы RSForm.

Проблема с кодировкой в CSV файле

Компонент форм Joomla позволяет Вам экспортировать предоставленные пользователями данные в различные файлы. Например, в CSV. При открытии такого файла могут быть проблемы с кодировкой (отображением русских и украинских букв).

Для минимизации подобной проблемы рекомендую открывать файлы в LibreOffice Calc (рисунок ниже), выбрав в качестве кодировки Юникод (UTF-8).

Данные с формы
Данные с формы

На рисунке выше показан пример настроек (Разделитель и Разделитель текста) импорта файла в случае, если Вы экспортировали данные из RSForm с настройками по умолчанию.

Если у Вас Excel, то откройте его и на вкладке Данные – Получение внешних данных выберите Из текста, укажите CSV файл и в появившемся окне в спадающем списке Формат файла выберите 65001: Юникод (UTF-8) (рисунок ниже). А на втором шаге нужно указать символ разделителя (по умолчанию – запятая).

Данные с формы
Данные с формы

Обратите внимание, что в Excel могут быть проблемы с акцентированными символами.

Если в результате выполнения вышеописанных действий Вы всё равно сталкиваетесь с проблемами в кодировке, то откройте CSV файл в Notepad++, перейдите в меню Кодировка (рисунок ниже) и преобразуйте кодировку файла в UTF-8 без BOM. А затем повторите вышеописанные действия с импортом файла в Calc или Excel.

Смена кодировки
Смена кодировки

При написании статьи тестировал файл в LibreOffice 5.3.4.2, Microsoft Office Excel 2016 и Notepad++ 7.4.2.

Необходимо указать хотя бы одного получателя электронной почты

Если при отправке данных Вы столкнулись с ошибкой: «Необходимо указать хотя бы одного получателя электронной почты» (на англ.: «You must provide at least one recipient email address»), то перейдите в настройки формы на вкладку Свойства в раздел E-mail пользователей и\или E-mail администраторов и\или Дополнительные E-mail и проверьте правильность заполнения полей Адрес отправителя и Кому (рисунок ниже). В них должны быть указаны или e-mail адреса или соответствующие заполнители.

Необходимо указать хотя бы одного получателя электронной почты
Необходимо указать хотя бы одного получателя электронной почты

Загруженное изображение в сообщении о благодарности

Если у Вас на форме Joomla 3 есть поле тип Загрузка файла и при помощи него пользователи загружают изображения, то можно отобразить это изображение в письмах E-mail пользователей, E-mail администраторов, благодарственном сообщении, на страницу отправленных данных формы (тип пункта меню RSForm! Pro – Показать отправленные данные) или в модуль «RSForm! Pro Module List». Рассмотрим на примере сообщения о благодарности.

Создайте поле тип Загрузка файла, например, с названием «prikrepit-fajl». Перейдите в свойства формы и в разделе Информация о форме нажмите кнопку Редактировать сообщение благодарности. В него добавьте HTML код:

<img src="/{prikrepit-fajl:path}" />

Это можно сделать при помощи, например, кнопки Выключить редактор. Если вставить сам заполнитель «{upload_field_name:value}» без тега изображения, то отобразится ссылка на загруженный файл.

На рисунке ниже показан пример окна с редактированием сообщения благодарности.

Редактирование сообщения благодарности
Редактирование сообщения благодарности

На сайте заполненное поле с отправкой файла выглядит так, как показано на рисунке ниже.

Прикреплённый файл
Прикреплённый файл

А так (рисунок ниже), выглядит страница с благодарственным сообщением.

Страница с благодарственным сообщением
Страница с благодарственным сообщением

Поля на формы не отображаются на сайте

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

В таком случает в макет формы не попадают все нужные заполнители. Форма может не работать вовсе. Чтобы это исправить, нужно или вручную добавить заполнители всех полей, или включить опцию Генерировать макет автоматически?.

Учтите, что при активации данной опции Вы потеряете весь JavaScript, CSS и HTML-код, который Вы могли добавлять ранее. Сделайте резервную копию.

Если Вы решитесь на ручное добавление полей, то тут Вам понадобятся знания HTML. Немного о синтаксисе заполнителей. Допустим, у Вас есть поле с названием «vashe_ima».

  • «{vashe_ima:caption}» – подпись поля.
  • «{vashe_ima:body}» – само поле, например, текстовая строка или выпадающий список.
  • «{vashe_ima:validation}» – сообщение проверки. Если для поля задано правило проверки, и оно сработает, то будет показан текст. Если всё будет введено верно, то текст показываться не будет.
  • «{vashe_ima:description}» – описание поля.

Рекомендуется добавлять все заполнители для каждого поля, но основные (обязательные) – это «{vashe_ima:body}» и «{vashe_ima:validation}».

Обратите внимание, что заполнители чувствительны к регистру и их нельзя переводить на другой язык. Если у Вас сайт не на английском, то всё равно используйте именно такие заполнители.

Добавление условий и терминов

Рассмотрим решение задачи с добавлением поля «лицензионного соглашения». Например, соглашения, разрешающего Вам обрабатывать персональные данные, которые отправляет пользователь через Вашу форму. При этом сделаем так, что пользователь сможет отправить данные, если прокрутит текст соглашения до конца.

Сперва создайте поле тип Текстовая область. В моём примере его название «tekst_soglasheniya». Перейдите на вкладку Атрибуты этого поля и в поле Дополнительные атрибуты вставьте код:

readonly="readonly"

Этот код сделает текст поля доступным только для чтения.

Создайте поле тип Группа чекбоксов. В моём примере его название «prinimayu». В этом поле будет только один элемент «Я принимаю условия» (без кавычек). Перейдите на вкладку Проверка и для опции Обязательное выберите Да. Перейдите на вкладку Атрибуты данного поля и в поле Дополнительные атрибуты вставьте код:

onclick="return textareaAtEnd(document.getElementById('tekst_soglasheniya'));"

Этот код проверяет, чтобы пользователь докрутил текст поля до конца. Тут «tekst_soglasheniya» – название поля с текстом лицензионного соглашения.

Перейдите в свойства формы в раздел CSS и Javascript и в область Javascript вставьте следующий код:

<script type="text/javascript">
function textareaAtEnd(area)
{
  bul = false;
  bul = (area.scrollTop + area.offsetHeight) > area.scrollHeight ;
  if(!bul)
  {
    alert('Пожалуйста, прочтите текст условий до конца');
    document.getElementById('prinimayu0').checked = false;
  }
    return bul;
}
</script>

Где «prinimayu» название моего поля с чекбоксом. После названия обязательно должен стоять «0» (без кавычек). Текст «Пожалуйста, прочтите текст условий до конца» можно изменить на свой.

Добавление появляющегося изображения при отправке формы

Рассмотрим ситуацию, когда нужно отобразить какой-то рисунок по нажатию на кнопку отправки данных. До этого он должен быть скрытым.

Перейдите в свойства формы в раздел Макет формы и для опции Генерировать макет автоматически? выберите Нет. В поле HTML макет добавьте следующий код туда, где нужно будет отображать картинку:

<div id="1" style="display: none">
<img src="/images/knopka.gif" alt="gif"/>
</div>

Где ID может быть не только «1». «/images/knopka.gif» – путь к картинке на Вашем сервере.

Перейдите к редактированию поля тип Кнопка отправки и на вкладке Атрибуты введите следующий код в поле Дополнительные атрибуты:

onclick="document.getElementById('1').style.display='';formname_id.submit();"

Где «1» – это ID того дива, который Вы вставили в HTML макет. Теперь по нажатию на кнопку отправки будет показываться изображение. Вышеописанный пример подойдёт и для поля тип Кнопка.

По нажатию на кнопку отправки ничего не происходит

Если при нажатии на форме на кнопку «Оправить» ничего не происходит, попробуйте следующие варианты решения проблемы.

  1. Проверьте, чтобы кнопка «Отправить» была полем тип Кнопка отправки, а не Кнопка.
  2. Если у Вас отключена опция Генерировать макет автоматически?, то проверьте, чтобы макет формы был правильным. Немного подробнее об этом в статье выше.
  3. Проверьте, чтобы у Вас не было включено кэширование. Немного подробнее об этом в статье выше.
  4. Если Вы используете различные расширения по оптимизации скорости загрузки сайта типа JCH Optimize Pro или WEBO Site SpeedUp, то временно отключите их.
  5. Проверьте консоль инструментов для разработчиков (в браузере (например, Firebug для Firefox)); проверьте логи сервера; включите Сообщения об ошибках (Для разработчиков (все ошибки PHP)) в глобальных настройках Joomla на вкладке Сервер. Если там есть ошибки, попытайтесь их исправить или обратитесь в службу технической поддержки разработчика RSForm Pro.

Изменение первого дня недели календаря

По умолчанию, компонент форм Joomla, в поле тип Календарь, ставит в качестве первого дня недели «Воскресенье». Чтобы изменить его на «Понедельник» зайдите в папку сайта «language/ru-RU» (или другого нужного Вас языка), найдите файл «ru-RU.com_rsform.ini», найдите в нём строку «RSFP_CALENDAR_START_WEEKDAY="0"» (примерно №54) и замените «0» на «1», чтобы было так: «RSFP_CALENDAR_START_WEEKDAY="1"» (без кавычек ёлочек). Теперь в календаре понедельник будет первым.

Миграция форм RSForm Pro с Joomla 1.5 на Joomla 3

Если Вы обновляете свой сайт с Joomla 1.5 до Joomla 3 и хотите перенести формы, то сперва убедитесь, что на сайтах установлены последние доступные версии RSForm Pro (с учётом совместимости с версией Joomla). Для Joomla 1.5 последняя версия RSForm Pro – это rev.44. Есть два варианта миграции форм и предоставленных данных.

Вариант №1. На сайте под управлением Joomla 1.5 перейдите в Компоненты – RSForm!Pro – Архивация / Восстановление. Затем перейдите на вкладку Архивация, выберите все формы, которые хотите перенести, при необходимости переноса отправленных данных активируйте опцию Включить предоставленные данные?. Экспортируйте всё в файл.

На сайте под управлением Joomla 3 перейдите в Компоненты – RSForm!Pro – Архивация / Восстановление. Затем перейдите на вкладку Восстановить, укажите экспортированный файл в поле Архивная копия. Если у Вас на новом сайте ещё нет никаких Важных форм и отправленных данных (которые нельзя потерять), то можете активировать опции Перезаписать существующие формы? и Получение ID форм из архива. После этого нажмите Восстановить.

Если не активировать данные опции (Перезаписать существующие формы? и Получение ID форм из архива) то могут возникнуть проблемы с отображением форм на сайте (в пунктах меню, модулях, материалах), так как отображение привязывается к ID форм, а эти ID могут поменяться.

Вариант №2. Откройте базу данных своего сайта под управлением Joomla 1.5 в чём-то на подобие phpMyAdmin (или в нём). Найдите все таблицы вида «ПРЕФИКС_rsform_НАЗВАНИЕ_ТАБЛИЦЫ» (рисунок ниже).

Таблица форм в базе данных
Таблица форм в базе данных

Экспортируйте их посредством phpMyAdmin. Префикс таблиц у каждого будет свой. Количество и набор таблиц базы данных RSForm Pro будет отличаться в зависимости от количества установленных плагинов RSForm Pro.

Перед импортом таблиц в новую базу данных переименуйте старый префикс на новый.

После импорта таблиц в новую базу данных повторно установите RSForm Pro на новом сайте. Это нужно для обновления структуры таблиц до последней версии.

Не работает AJAX проверка

Если Вы столкнулись с тем, что для полей не работает AJAX проверка, то попробуйте следующие варианты решения данной проблемы.

  1. Перепроверьте все скрипты, которые Вы сами добавляли. В свойствах формы в разделе CSS и Javascript в области Javascript. В их синтаксисе не должно быть ошибок.
  2. Отключите все сторонние плагины в Расширения – Плагины (в самой Joomla).
  3. Попробуйте работу формы в «стандартном» шаблоне сайта «protostar» или «Beez3». Возможно, в Вашем шаблоне не подгружаются все необходимые инструменты для работы AJAX.
  4. Проверьте, чтобы у Вас не было включено кэширование. Немного подробнее об этом в статье выше.
  5. Если Вы используете различные расширения по оптимизации скорости загрузки сайта типа JCH Optimize Pro или WEBO Site SpeedUp, то временно отключите их.
  6. Проверьте консоль инструментов для разработчиков (в браузере (например, Firebug для Firefox)); проверьте логи сервера; включите Сообщения об ошибках (Для разработчиков (все ошибки PHP)) в глобальных настройках Joomla на вкладке Сервер. Если там есть ошибки, попытайтесь их исправить или обратитесь в службу технической поддержки разработчика RSForm Pro.

В следующей статье «Инструкция RSForm Pro (часть 4). reCaptcha v2» поговорим о скрытых полях, префиксе загружаемых файлов, проверке специальных символах и других часто-задаваемых вопросах.

Похожие материалы
Автор статьи – Хорошевский Алексей

Хорошевский Алексей Примерно с 2008 года и по сегодняшний день создаю сайты «под ключ» на Joomla и WebSite X5. Также занимаюсь их доработкой, SEO-продвижением, контекстной рекламой, защитой от взлома и оптимизацией скорости загрузки сайта.

Кандидат технических наук по специальности «Информационные технологии».

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

 

Полезные ссылки:

Скачать файл Описание
zip Примеры форм RSForm Pro К статье «Инструкция RSForm Pro (часть 3)»