Отели в Ираке
Выберите город и даты — покажем отели с ценами. Заявка без предоплаты, бронирование подтвердит менеджер.
Пятизвёздочные отели Ирака
Что уходит в Roomlink по этому поиску (в демо не отправляется)
Как я это сделаю
План рабочей версии на вашем Битриксе. Нажмите на блок, чтобы прочитать, что он делает.
Путь одного поиска
- Форма → /hotels/?city=…&in=…&out=…Город, даты, гости и номера уходят в адрес страницысразу
- Проверка кэша поискаТакой же запрос за последние 15 минут отдаётся без обращения к поставщику≈ 5 мс
- HotelSearchRequestПо одному запросу на каждый состав номера: «2 гостя» и «3 гостя» — два запроса0,1–0,4 с*
- Разбор ответаОтели, тарифы, питание, наличие. Счётчики звёзд и завтраков — по всей выборке≈ 20 мс
- Первые 20 отелейОстальные страницы и фильтры — из кэша, без перезагрузкисразу
- «Показать все номера»Тарифы уже пришли в ответе поиска, список раскрывается без нового запросасразу
* время ответа — из примеров в документации Roomlink API 4.0.1; на ваших доступах замерю и покажу. Остальное — моя оценка.
Что я уже нашёл в документации Roomlink
| Гости и номера | В поиске есть только NumberOfGuests (от 1 до 4), числа номеров в запросе нет. Поэтому единый блок «гости и номера» раскладывается в запросы по составу каждого номера, цены складываются, а число номеров сверяется с остатком Availability Rooms. |
| Звёзды | Приходят справочником Stars Code от 1 до 7, среди значений есть отели без категории. В фильтре это отдельная строка «Без звёзд», отели не теряются. |
| Завтрак | Meal Code="1" — питание включено в цену, "2" — за доплату. «Завтрак включен» = код 1 и тип питания с завтраком: завтрак, полупансион или полный пансион. |
| Пагинация | API отдаёт всю выборку по городу одним ответом. Разбивку по 20 отелей и счётчики делает модуль. |
| Страна | В примере CountryListRequest в документации только страны СНГ. Первым делом вызову метод с вашими доступами и проверю, что Ирак есть в выдаче и сколько там пятизвёздочных отелей. В заголовке ТЗ указан Пакистан — уточню, какая страна нужна. |
| Цена | Заявка уходит письмом, бронирования через API нет, поэтому показывается цена на момент поиска. Она же попадает в письмо менеджеру. |
Что не сломается
| Roomlink недоступен | Форма и карусель работают из кэша. Вместо пустой выдачи — сообщение и кнопка «Оставить заявку, подберём вручную». |
| Двойная отправка | Кнопка блокируется после нажатия, проверяется сессия Битрикс, есть скрытое поле от ботов и ограничение — не чаще одной заявки в 30 секунд. |
| Нагрузка на API | Кэш поиска и справочников: посетитель, который листает страницы и щёлкает фильтры, делает один запрос, а не двадцать. |
| Персональные данные | Чек-бокс согласия и ссылка на политику — так же, как в остальных формах сайта. |
| Телефоны | Вёрстка проверяется на 360, 390, 768 и 1280+ пикселях; фильтр на телефоне сворачивается в кнопку. |
Этапы и сроки
Модуль и настройки, клиент Roomlink, кэш справочников, агент, форма поиска и карусель на /iraq/.
/hotels/: список по макету, 20 на страницу, фильтры со счётчиками, номера с ценами, попап и письмо.
Карточка отеля, фото, удобства, Яндекс-карта, адаптив, перенос на боевой сайт, инструкция.
Что в этом демо настоящее
Работают форма с календарём и блоком «гости и номера», выдача, фильтры со счётчиками, пагинация, раскрытие номеров, попап и карта. Отели, цены и фотографии — демонстрационные: доступа к вашему договору с Roomlink у меня нет. Письмо в демо не отправляется — после отправки формы показан его текст.