Есть у нас афиша с кинофильмами, нам надо на детальном описании фильма вывести еще и расписание сеансов к нему. Все усложняется тем, что фильм может одновременно идти в нескольких кинотеатрах и сеансы соответственно могут быть разными для каждого кинотеатра, а так же тем, что выводится расписание на несколько дней вперед.
Я просто уже по-всякому пробовал, но не получается у меня и все тут. Может кто подкинет идею как на инфоблоках такое сделать? Мне бы только идею понять как так сделать, а дальше уж пойдет без проблем.
Я бы сделал так. Описание фильма - один инфоблок (назовем Y) Кинотеатры - второй
В кинотеатрах - расписание одно и тоже каждый день, но фильмы меняются. То есть создаем папку - кинотеатр в папке записи о сиансах (назовем X) 08:00 - название фильма ... 20:00 - название фильма
где 08:00 - это название записи
Теперь о фильмах. Из записи сеанса X делаем ссылку на запись о фильме Y
Оператору достаточно изменять ссылки в X на Y
Теперь как вывести расписание по кинотеатрам.
Берем GetList инфоблока, задаем в фильтре параметры инфоблока X указываем на что должно ссылаться и выводим через шаблон
Тогда чуть сложнее в обновлении, но всеже если принаровится то можно.
В папке кинотеатра создайте папки по неделям в каждой папке идентичное содержание, далее по алгоритму.
Можно так же создать дефолтную папку с расписанием (не активную). Ее просто копируем, делаем активной и изменяем сеансы внутри. Можно простой скрипт написать, что-бы сам и делал копию
GetList-у до лампочки где искать, как настроите фильтр так и выдаст, поэтому дата начала активности элемента роли не играет, можно хоть 2200 год указать, все равно у Вас он в выдаче ближайших сеансов появиться.
Конечно это сложнее реализовать если Вы не программер. Могу посодействовать.
1) Спискок кинотеатров 2) Список Фильмов 3) Список сеансов
1 и 2 не буду описывать все просто.
В 3ем инфблоке есть 4 основных параметра:
1)Дата своства: 2)Время 3) Кинотеатр 4) Фильм Все свойства ввиде ссылок на элементы. Все выборки и отборы делаются при помощи getlist т.е. выбираем по дате, кинотеатру или фильму.
Данная схема дает логичность разбивки параметров. Простоту загрузки расписания из xml,csv. Каждый элемент в 3 имнфоблоке является сеансом. Например в данном случае можно сделать дополнительные сервисы.
Небольшая поправка по св-ву "Время", лучше использовать не ссылка на элемент(нет смысла), а другой вид свойства.С этим вопросом я думаю сами разберетесь, что использовать.
Тоже заинтересовала идея. А можно привести примеры кода вывода сеансов? Не очень понятно как именно (что именно) вводить данные в инфоблок "Список сеансов".
И ещё возникает попутный вопрос - как сортировать фильмы не по дате "Начало активности", а по свойству например дата старта проката в кинотеатре?
На http://centerfilm.ru/films/detail.php?ID=2746 реализовано с помощью календаря. Интересно, можно ли прикрутить его к нашему варианту из 3х инфоблоков и как? Вероятно тогда можно сделать чтобы пользователи выбирали любой день в календаре и видели события, например фильмы.
Еще фишка маленькая. У вас наверно есть свойство "длительность фильма"? плюсуйте её к началу сеанса и показывайте. Очень полезная фича будет :)Иногда нужно знать, чтоб подбить время.
Вячеслав, это ваш личный проект? (просто для интереса)
Через дату и функцию mktime. Через нее плюсуется +1 и +2 к сегоднешнему числу. Вот. А дальше делаем выборки, где дата и ид фильма совпадают с сегодняшним числом, ну и соответственно со значениями "сегоднешнее число +1" и "сегодняшнее число +2", что будет потом завтра и послезавтра.
Вячеслав Терских, не могли бы вы поделиться скриншотами свойств и php код, позволяющий вывести таким же образом как у вас на сайте http://afisha.khakasia.ru/. Перечитывали эту ветку по несколько раз и никаких успешных результатов... Был бы премного благодарен за помощь! Заранее спасибо