- Описание
- Установка
- Настройка веб сервера
- Данные и шаблоны
- Оптимизация JS и CSS файлов
- Вывод контента
- Корзина товаров
- Настройка онлайн оплаты
- Настройка оплаты через Robokassa
- Меню
- Формы
- Поиск
- Учет количества товара на складе
- Мульти-валютность
- Мульти-язычность
- Изменение размеров изображений
- Разработчикам
- Импорт-Экспорт
- Установка на локальный сервер XAMPP в Windows
- Настройка VDS и установка Nginx, PHP, MongoDB, Shopker
- JavaScript API
- Визуальный редактор шаблонов
- Бронирование
- Экспорт каталога в Яндекс.Маркет
- Bash скрипт для настройки VDS
- Bash скрипт для установки
- API
- Установка локально в ОС Windows
Бронирование
Клиент может произвести бронирование объекта на дату и время. Дата и время начала и окончания брони могут влиять на итоговую цену.
Создание поля
В административной части необходимо создать поле с типом "Расписание". Для этого перейти в раздел "Каталог" -> "Типы контента".
Выбрать нужный тип контента (или создать новый). В окне редактирования в блоке "Добавить поле" заполнить поля.
Пример:
Заголовок - Бронирование
Системное имя - 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
).
Разные параметры календаря для разных товаров (услуг)
Иногда необходимо задать разные параметры календаря для разных товаров и услуг. Например, некоторые услуги бронируются на сутки, а некоторые на часы или минуты. В этом случае нужно создать отдельные параметры для таких объектов.
Для этого нужно:
- Создать новое поле с типом ввода "Параметры товара".
- Если такое поле уже есть и оно не используется для создания параметров товара, то в шаблоне вывод этого поля необходимо убрать.
Т.е. такую строку
{{ renderOutputTypeChunk(currentPage, fields, 'parameters', 'page_') }}
из кода шаблона нужно убрать. - В административной части открыть раздел шаблоны и найти шаблон "/templates/default/catalog/schedule_fullcalendar.html.twig". Открыть его для редактирования.
- В параметрах товара нужно создать те опции календаря, которые необходимо переопределить для конкретного объекта. Например, в свойствах товара создать параметр с именем "slotDuration" (этот параметр влияет на итоговую цену), задать ему нужное значение.
- В шаблоне этот параметр можно выводить с помощью Twig-функции "getFieldOption".
Пример:
... slotDuration: '{{ getFieldOption(currentPage.parameters, 'slotDuration', 'value') }}', ...
- Повторить операцию для всех параметров, которые необходио определять отдельно для каждого объекта (товара или услуги).