Куда идем?

Помимо всего прочего SEBLOD имеет в себе встроенную функцию создания многостраничной формы. Это такая форма, информация в которую вводится постепенно.

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

Работа с SEBLOD Stages очень проста, но требует хорошего понимания того, что вы делаете. То, что это не пустые слова, станет понятно ниже, а сейчас давайте еще раз разберемся в том, что такое многостраничная форма и какие они бывают.

Типы многостраничных форм

Многостраничная форма – форма с набором полей, состоящая из нескольких страниц. Самые известные примеры: мастер установки Joomla и мастер установки программ в Windows.

Положим, вы решили создать форму, состоящую из нескольких страниц, которую должен будет заполнить пользователь. Еще на этапе «осмысливания» вашей идеи вы должны задуматься над следующими вопросами:

1)  Зачем мне многостраничность?

Основных ответов всего два:

1 – уменьшить размеры общей формы, разбив ее на несколько страниц,  чтобы не отпугнуть пользователей;

2 – введенные данные из первой части формы требуются для генерации второй (например, в зависимости от того, какую группу для регистрации пользователь выберет на первой странице формы, заполняемые поля второй странице будут меняться).

Проще говоря, выбираем между эстетической и практической составляющей. Это важно.

2)  Каким образом будут собираться и сохраняться данные при переходе от страницы к странице?

Дело тут вот в чем: что произойдет с введенными данными первой страницы формы, когда пользователь заполнит ее и кликнет по кнопке «Далее»? Вариантов два:

1 – данные немедленно сохраняться в базу данных и, по мере заполнения следующих страниц формы, будут дополняться:

2 – заполненные поля формы станут скрытыми, а ранее скрытые поля будут показаны. Так будет происходить до заполнения всех полей мультиформы со всех страниц и, при нажатии на кнопку «Отправить», будут отправлены сразу все данные.

К чему эти вопросы? Многостраничную форму в SEBLOD можно создать разными способами. И от того, как вы ответите на данные вопросы, зависит тип формы, и, следовательно,  способ ее создания формы.

Можно определить следующие типы многостраничных форм:

1. Одностраничная форма, имитирующая многостраничность – это стандартная форма с набором полей, особенностью которой является тонкая настройка скриптов. Скрипты настраиваются таким образом, чтобы создать иллюзию многостраничности. К примеру, форма содержит 20 полей. При первоначальной загрузке страницы пользователь видит только 5 полей из 20 и кнопку «Далее». После того, как он заполнит эти поля и нажмет «Далее», сработает скрипт, который скроет заполненные поля (введенные в них данные останутся нетронутыми) и отобразит следующие 5 полей, которые на первом шаге были скрыты. В данном случае с точки зрения кода форма не меняется, а пользователю кажется, что он перешел на следующую страницу. Создать такую форму в SEBLOD можно с помощью Conditional States и Computation Rules.

2. Многостраничная форма, сохраняющая данные на каждом шаге – классическая многостраничная форма. После заполнения всех полей на первом шаге и нажатия кнопки «Далее» в работу включаются не скрипты, а HTML и PHP. В этом случае данные сразу же отправляются на сервер и в базе данных создается неполноценная запись, в которую вносятся только отправленные данные. После этого для пользователя генерируется новая форма, требующая заполнения следующего «пакета» полей. После того, как и вторая страница будет отправлена, новые данные будут добавлены в базу данных не как новая запись, а как обновление существующей. Проще всего это понять на примере стандартной регистрации пользователей. Для регистрации вы вводите лишь минимально необходимый набор данный (логин, пароль, email), а все дополнительные данные профиля заполняются уже после регистрации в личном кабинете. При этом изменения в базе данных происходят в текущей записи, а новой не создается. Текущая запись как бы дополняется данными.

По такому принципу работает функционал Stages в SEBLOD. При отправке данных первого шага формы, материал сохраняется (в базе данных создается запись), и сразу же открывается на редактирование – это будет вторая страница формы. При редактировании будут видны только незаполненные поля, относящиеся ко второй странице. При переходе на третью, данными второй дополнится уже созданная запись в базе данных. Для третьей и последующих страниц формы будут выполняться такие же действия, как и для второй.

3.Многостраничная форма, накапливающая данные полей в параметрах URL – данный тип многостраничной формы не создает запись в базе данных после первой страницы, а передает введенные данные в URL на страницу два. Вторая страница дополняет URL своими данными и отправляет на страницу три, и т.д. Данный способ, на мой взгляд, наиболее удобен, но пока не может быть применен с использованием стандартного функционала SEBLOD.

Таким образом, если вы не планируете создавать сложные зависимости в многостраничной форме, то лучше будет использовать для ее создания Conditional States и Computation Rules. Если же форма сложная, то к вашим услугам Stages, речь о которых пойдет далее.

Создание многостраничной формы с помощью SEBLOD Stages

Само по себе создание многостраничной формы с помощью Stages очень простое. Вы должны:

1. Создать новый тип контента;

seblod stages

2. Добавить к созданному типу контента необходимые поля;

seblod stages

3. Разделить поля разных уровней кнопками «Next», имеющимися в базовом наборе полей;

seblod stages

4. Перейти в настройки формы фронтенда (Siteform/Configuration), в блоке «Stages» найти опцию «Count», устанавливающую количество страниц многостраничной формы и выставить в ней значение.

seblod stages

5. В настройках полей формы нажать кнопку «3» и в колонке «Stages» установить для разных полей разные страницы.

seblod stages

Вот, что получилось в моем примере в результате выполнения вышеописанных действий:

seblod stages

seblod stages

seblod stages

SEBLOD Stages. Вероятные проблемы

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

1)  Данных на первой странице формы достаточно для создания записи в базе данных. Простой пример: вы решили разделить регистрацию пользователя на две страницы: на первой – Имя и Email, на второй – Логин и Пароль. Очевидно, что данных имени и email’а недостаточно для создания пользователя (создания записи в базе). Поэтому при попытке перейти на вторую страницу многостраничной формы, SEBLOD вернет ошибку незаполненности логина и пароля. С этим вы ничего не сможете поделать, только перенести все обязательные для регистрации поля на первую страницу формы.

2) Текущие права доступа позволяют пользователю редактировать созданные данные. Продолжим первый пример с формой регистрации. Вы решили создать двухстраничную форму регистрации, на первой странице которой вводятся Имя, Email, Логин, Пароль, а на второй странице вводится Информация о пользователе, Пол и Адрес. В данном случае многостраничная форма также выдаст ошибку. Почему? Вспомните про права доступа. Для того чтобы пользователь мог создавать и редактировать свои материалы, у него должны быть права доступа «Автор» или выше. До регистрации на сайте права пользователя «Гость». После заполнения первой страницы и отправки формы пользователь будет зарегистрирован, но не авторизован. После сохранения данных пользователя в базу, SEBLOD попытается открыть его профиль на редактирование для того, чтобы показать вторую страницу многостраничной формы, и при этом упрется в ограничение доступа для гостей. Вы можете изменить права доступа для каждого типа контента. На рисунке ниже показано, где это делается:

seblod stages

Но помните, что гостям нельзя давать права на редактирование материалов.

Понимая как работает SEBLOD Stages, и помня про его ограничения, вы получаете хороший функционал, позволяющий конструировать многостраничные формы, что еще больше расширяет ваши возможности в создании сайтов на Joomla и SEBLOD.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
2
Здравствуйте, спасибо, за ваши уроки, но не хватает такого урока, как организация личного кабинета на Seblod, очень много вопросов на форуме, но такого детального и развернутого руководства очень не хватает, в свое время делала доску объявлений на jbzoo, но если бы знала что есть seblod, много подводных камней могла бы избежать
1
Дарья, личный кабинет, в зависимости от сайта, может быть очень разным. Такой урок можно создать, но в любом случае он получится узкоспециализированным и не подойдет для всех.
0
Скажите пожалуйста для создания дерева категорий каталога используются обычные категории joomla, или есть другие варианты?
0
Рслан, я всегда использую пункты меню Joomla. С одной стороны, это достаточно большая ручная работа, особенно, если пунктов много, но с другой стороны, такой подход позволяет гибко управлять модулями, SEF-ссылками и SEO-данными.
0
Спасибо за шикарную серию статей по данному компоненту.
Можно ли организовать с помощью Seblod отправку данных из многостраничной формы на email.
0
M0EStRO, да, можно. Просто объединяете эту статью и статью про отправку email: http://wedal.ru/rasshireniya-joomla/seblod-konstruktor-kontenta-cck-dlya-joomla-chast-9-pole-email-kak-sozdat-formu-obratnoj-svyazi.html
0
Вопрос по "Одностраничной форме, имитирующей многостраничность". Как переключаться между вкладками. Ведь для того чтобы скрыть первую страницу и показать вторую, пользователь должен что-то нажать, а это что-то - кнопка button- полюбому отправляет данные в базу. Как быть?
0
Дмитрий, в этом случае при нажатии кнопке "Далее" данные никуда не отправляются. Вы просто видите не всю форму сразу, а ее части, которые появляются и исчезают при клике по кнопке. Данные будут отправлены на сервер только на последнем этапе, когда клик будет не по "ложной" кнопке, просто вызывающей срабатывание скриптов в браузере, а по "настоящей", отправляющей данные на сервер.
0
Виталий, бьюсь с регистрацией, поставил в менеджере пользователей активация - нет, при регистрации группа - авторы, в Себлоде в конфигурации типа юзер выставляю permission. Делаю регистрацию в две страницы, на первой - все самое стандартное, логин, пароль, емайл, на второй - аватар, страна, город, но при нажатии на первую кнопку Next вылетает ошибка "You are not allowed to access this resource". (Seblod3,J3)
0
koshsh, скорее всего ошибка где-то в permission. Возможно не в Joomla, а в SEBLOD. Проверьте еще раз настройки прав доступа для пользователей и типа контента "Пользователи".