cabrooney Posted July 21, 2021 Share Posted July 21, 2021 Is there a simple solution to generate (find) and sort an array of repeater field entries, that come from multiple pages? In my case the setup is like this: - I have pages for "theater plays" (storing title, text, artists etc.). - Each of these pages has a repeater field in it for the dates that the play is performed (storing datetime, location, tickets, prices etc.) Now i need to generate an overview showing all the events (Titel and date) that will take place in december. What i managed to do so far is to search for a timespan, but only in one repeaterfield on one page (and the results are not sorted): $zeit_start = strtotime("2021-12-01 00:00:00"); $zeit_end = strtotime("2021-12-31 00:00:00"); $terminliste=$page_play->termin_repeater->find("termin_datum>=$zeit_start , termin_datum<=$zeit_end "); foreach($terminliste as $termin){ // echo $termin->title; } So how can i use "find()" to scan all the repeater field entries of all the pages, and how can i then uns "sort()" to bring them in the right order? Link to comment Share on other sites More sharing options...
AndZyk Posted July 22, 2021 Share Posted July 22, 2021 Hello @cabrooney, repeater items have their own system template: You should be able to find them and sort them like this: $zeit_start = strtotime("2021-12-01 00:00:00"); $zeit_end = strtotime("2021-12-31 00:00:00"); $terminliste = $pages->find("template=repeater_termin_repeater, termin_datum>=$zeit_start , termin_datum<=$zeit_end, sort=termin_datum"); Maybe you have to add "include=all" too, if the selector doesn't find anything while you are logged-out. I am not sure if that is necessary. Regards, Andreas 1 Link to comment Share on other sites More sharing options...
cabrooney Posted July 22, 2021 Author Share Posted July 22, 2021 Thank you very much for your help. it worked perfectly! Here is my final code: $zeit_a = strtotime($jahr."-12-01 00:00:00"); $zeit_b = strtotime($jahr."-12-31 23:59:59"); $terminliste=$pages->find("template=repeater_termin_repeater, include=all, sort=termin_datum, termin_datum>=$zeit_a, termin_datum<=$zeit_b"); One other thing i had to figure out after that was the use of ->getForPage() to get access to the "origin" page. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now