janlonden Posted February 18, 2014 Share Posted February 18, 2014 Here's a couple of problems I need help with. I have a schedule page with a repeater field which has besides other fields a date field. Right now it displays all items. What I would like it to do is to only show future items and todays item. The code I'm using: <?php foreach($page->schedule as $schedule_item) { ?> <p><?=$schedule_item->schedule_date?></p> <p><?=$schedule_item->location->title?></p> <?php if($schedule_item->location->location_url) { ?> <p><a href="<?=$schedule_item->location->location_url?>">Karta</a></p> <?php } ?> <p><?=$schedule_item->starts?></p> <p><?=$schedule_item->ends?></p> <?php } ?> I would also like a "next schedule item" thingy on the homepage, which would only show the next item on the schedule or todays schedule. Any help appreciated! Edit: I found help on a couple of threads here Here's how I got it working. Show only future items and todays item: <?php $today = strtotime(date("Y-m-d") . " 00:00:00"); foreach($schedule_items = $page->schedule->find("schedule_date>=$today") as $schedule_item) { ?> To show only one item on the homepage I just added limit=1: <?php $today = strtotime(date("Y-m-d") . " 00:00:00"); foreach($schedule_items = $pages->get(1007)->schedule->find("limit=1, schedule_date>=$today") as $schedule_item) { ?> Link to comment Share on other sites More sharing options...
adrian Posted February 18, 2014 Share Posted February 18, 2014 Have you read the pages on repeaters, especially the section on: "Finding pages by repeater value (using selectors)" You should be able to figure it out from there using a selector that finds items with schedule_date > time() Let us know if that gets you on your way, or if you need more specific help. 2 Link to comment Share on other sites More sharing options...
slkwrm Posted February 18, 2014 Share Posted February 18, 2014 I see you found your solution, but I will post mine anyway, maybe it will be of some help too <?php $today = strtotime('today midnight'); //or if you want to show only events in future //$today = date(); $schedule = $page->schedule->find("schedule_date>$today"); //then put $schedule in your loop Also you can request one item like this: <?php $schedule_item = $pages->get(1007)->schedule->get("schedule_date>=$today"); //maybe you'll want to sort them if they are not in the right order, then add sort=schedule_date to your selector 2 Link to comment Share on other sites More sharing options...
janlonden Posted February 18, 2014 Author Share Posted February 18, 2014 Thanks adrian and slkwrm. $today = strtotime('today midnight'); This made my code a bit cleaner 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