Мы часто встречались с потребностью организаций создавать анонс своих мероприятий в виде календаря и чтобы у пользователей была возможность онлайн-записи на мероприятия. И если в WordPress эту нишу твердо занимает плагин Events Calendar (большинство функций у него бесплатное), то для Битрикса готовых решений просто нет.
Вот и при работе над проектом «Равные консультанты в онкологии» мы в столкнулись с задачей, когда нужно было создать список мероприятий с отображением в виде календаря, которые пользователь мог бы фильтровать по нескольким параметрам (город проведения, категория проведения, периодичность мероприятия) с возможностью записаться на необходимое мероприятие. В очередной раз зайдя в Маркетплейс Битрикса и убедившись, что ничего похожего нет, поняли, что придется делать самим.
Учитывая сроки сдачи проекта, создавать модуль с нуля нам показалось неоправданным решением и мы решили приобрести модуль «Расписание» от компании Мибок и доработать под наши задачи. В этом модуле нам сразу понравилась реализация большого количества параметров, которые были нужны и нам: категории мероприятий, периодичность мероприятий, цвет отображения мероприятия в списке, возможность сохранения записи на мероприятие в инфоблок, возможность установления лимита записи на мероприятие и счетчик свободных мест.
Минусы модуля для наших задач:
Для реализации отображения списка мероприятий в виде календаря мы решили использовать библиотеку Tiva Events Calendar работающую на jQuery и Ajax, заменив ею шаблон из коробки от Мибок. Эта библиотека позволяет через Json выводить в шаблон расписания все записи анонсов мероприятий из нужного раздела, а также позволяет их сортировать через фильтры и инструменты навигации. Также в данной библиотеке есть возможность выводить анонс мероприятия во всплывающем окне (дата проведения и время проведения, название, изображение анонса, текст анонса) при наведении на название мероприятия в календаре.
Еще мы доработали вывод описания мероприятия на отдельную страницу и добавили проверку посетителя, чтобы зарегистрироваться мог только авторизованный пользователь. Готовое решение полностью закрывало задачи клиента.