Документация

Бронирование

Клиент может произвести бронирование объекта на дату и время. Дата и время начала и окончания брони могут влиять на итоговую цену.

Создание поля

В административной части необходимо создать поле с типом "Расписание". Для этого перейти в раздел "Каталог" -> "Типы контента". Выбрать нужный тип контента (или создать новый). В окне редактирования в блоке "Добавить поле" заполнить поля. Пример:
Заголовок - Бронирование
Системное имя - booking
Тип ввода - Распиание
Тип вывода - Расписание
Группа - Бронирование

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

Нажать кнопку "Сохранить поле", затем "Сохранить и хакрыть".

Шаблон страницы товара с календарем бронирования

Если у вашего типа контента системное имя "booking", то для вывода страницы товара (услуги) будет использован шаблон "/templates/default/booking_content-page.html.twig". Если системное имя другое (или другая тема шаблонов), то данный шаблон можно использовать как пример.

В данном шаблоне используется другой шаблон для удобства и универсальности: "/templates/default/catalog/schedule_fullcalendar.html.twig". Вверху есть такая строка:

{% use 'catalog/schedule_fullcalendar.html.twig' with body as schedule_body, stylesheets as schedule_stylesheets, javascripts as schedule_javascripts %}

Эта строка импортирует в шаблон соответствующие блоки из указанного шаблона. В блоках содержится HTML-код для вывода календаря и подключения стилей и JS-скриптов.

Содержимое блоков можно выводить в соответствующих блоках текущего шаблона: Внутри блока "body":

{{ block('schedule_body') }}

Внутри блока "stylesheets":

{{ block('schedule_stylesheets') }}

Внутри блока "javascripts":

{{ block('schedule_javascripts') }}

Формирование итоговой цены

Указанная цена товара или услуги считается как цена за период, указанный в параметре "Минимальная продолжительность" (параметры типы вывода). В данном параметре можно указать минуты (пример: 00:10:00) или часы (пример: 24:00:00).

Разные параметры календаря для разных товаров (услуг)

Иногда необходимо задать разные параметры календаря для разных товаров и услуг. Например, некоторые услуги бронируются на сутки, а некоторые на часы или минуты. В этом случае нужно создать отдельные параметры для таких объектов.

Для этого нужно:

  1. Создать новое поле с типом ввода "Параметры товара".
  2. Если такое поле уже есть и оно не используется для создания параметров товара, то в шаблоне вывод этого поля необходимо убрать. Т.е. такую строку {{ renderOutputTypeChunk(currentPage, fields, 'parameters', 'page_') }} из кода шаблона нужно убрать.
  3. В административной части открыть раздел шаблоны и найти шаблон "/templates/default/catalog/schedule_fullcalendar.html.twig". Открыть его для редактирования.
  4. В параметрах товара нужно создать те опции календаря, которые необходимо переопределить для конкретного объекта. Например, в свойствах товара создать параметр с именем "slotDuration" (этот параметр влияет на итоговую цену), задать ему нужное значение.
  5. В шаблоне этот параметр можно выводить с помощью Twig-функции "getFieldOption". Пример:
    ...
    slotDuration: '{{ getFieldOption(currentPage.parameters, 'slotDuration', 'value') }}',
    ...
  6. Повторить операцию для всех параметров, которые необходио определять отдельно для каждого объекта (товара или услуги).

Дополнительные материалы