Є дві категорії "події" та "курси" з двума різними шаблонами.
Задача: витягнути усі документи з цих шаблонів, відсортувати за датою (показати документи тільки конкретного місяця) і вивести у зворотньому напрямку.
Для цього написав функцію:
function return_calendar_auto($input_month, $year) { $month_min = strtotime("first day of $input_month $year"); // перший день місяця $month_max = strtotime("last day of $input_month $year"); // останній // date -- це назва поля $event = pages()->find("template=event, date>$month_min, date<$month_max, sort=date"); // сортуємо 1 вибірку $course = pages()->find("template=course, date>$month_min, date<$month_max, sort=date"); // сортуємо 2 вибірку $month = $event->and($course); // поєднуємо в один масив $month->sort('date'); // повторно додаємо зворотнє сортування за датою return_calendar($month); // ще одна функція, яка циклом виводе дані на сторінку }
Або ж ще простіше:
function return_calendar_auto($input_month, $year) { $month_min = strtotime("first day of $input_month $year"); // перший день місяця $month_max = strtotime("last day of $input_month $year"); // останній $month = pages("template=event|course, date>$month_min, date<$month_max, sort=date"); return_calendar($month); // ще одна функція, яка циклом виводе дані на сторінку }
Ускладнюємо задачу! Потрібно відсортувати за полем "page reference", в яке може попасти кілька значень (автор курсу або події):
$items = pages("template=event|course, speaker.title={$page->title}");