• Блог
  • [oneBooking] Собственные формы и поиск

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

В этот раз я решил обойтись без моделей и таблиц, а использовал формат YAML. Описание полей загружается из файла /core/components/onebooking/extras/booking.extras.yaml. В нем указываете свои поля. Для примера там же лежит файл example.booking.extras.yaml. Можете переименовать его, а можете создать новый по образцу. В файле подробно описан формат полей. Для удобства можно создать статический чанк и указать этот файл в качестве исходника.

Для примера приведу описание поля формы типа «select»

// Название поля
select_field:
    // Для вывода на сайте
    field: |
        <label class="labelform" for="select_field">Список</label><br>
        <select class="ob-extras-textarea form-control" name="select_field" id="select_field">
            <option value="500">Один</option>
            <option value="1000" selected>Два</option>
            <option value="1500">Три</option>
        </select>
    // Название поля
    label: Список
    // Учитывать стоимость один раз или каждый день
    apply_once: 0
    // Учитывать сумму в акциях или нет
    calc_after: 0
    // Признак, что поле не информационное и его нужно учитывать в расчетах стоимости.
    calculate: 1
    // Признак, что поле обязательное
    required: 1
    // Тип поля (для интерфейса администратора)
    type: select
    // Значение по-умолчанию
    default: 500
    // Элементы списка в формате "стоимость:заголовок в списке"
    items:
        500: Один (500)
        1000: Два (1000)
        1500: Три (1500)

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

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

<form>
	...
	<div class="form-group">
		[[+city]]
	</div>
	<div class="form-group">
		[[+select]]
	</div>
	<div class="form-group">
		[[+radio]]
	</div>            
</form>

Таким образом можно делать любые формы. Надо только помнить об обязательных полях «object»,«start_date»,«end_date» и «nubmer» (что, когда и сколько). В качестве примера можно использовать стандартную форму.

Для подключения своих форм добавлены системные настройки frontend_js и frontend_css для собственных файлов стилей и скриптов. Позже постараюсь сделать примеры-заготовки.

Еще появилась очень полезная вещь — поиск доступных объектов на заданную дату. Выглядит это так

Вызывается сниппетом obSearch.

Также в сниппеты obCalendar, obForm и obButton добавлен параметр resource, который будет очень полезен при вызове сниппетов на странице ресурса-продукта miniShop2. Т.е. на таких страницах эти сниппеты можно вызывать без параметра object, а так

[[!obCalendar? &recource=`[[*id]]`]]
// или даже без параметра
[[!obCalendar?]]

Объект автоматически подтянется из связи «объект-продукт».

Кроме того, обновлены некоторые чанки. Они указаны в changelog. Их нужно отметить при обновлении компонента или обновить вручную.

Для информации

Компонент из простого календаря бронирования постепенно вырос в систему бронирования. Много уже добавлено. И еще планируется. В связи с чем стоимость компонента выросла. Но все равно ниже аналогичной в Wordpress.

0   1581

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.