home - show only ordered future events
This commit is contained in:
parent
2cf0f66586
commit
b82f6ebba2
3 changed files with 57 additions and 12 deletions
29
site/collections/ordered-season.php
Normal file
29
site/collections/ordered-season.php
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
return function($kirby) {
|
||||
$orderedSeason = new Pages();
|
||||
|
||||
foreach ($kirby->collection('current-season')->children() as $event) {
|
||||
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
||||
|
||||
$sessionDates = $sessions->map(function($session) {
|
||||
return $session->date()->value();
|
||||
})->data;
|
||||
|
||||
if (!empty($sessionDates)) {
|
||||
$orderedSeason->add($event);
|
||||
}
|
||||
}
|
||||
|
||||
// Trier les événements en fonction de la date la plus proche
|
||||
$orderedSeason = $orderedSeason->sortBy(function ($event) {
|
||||
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
||||
|
||||
$sessionDates = $sessions->map(function($session) {
|
||||
return $session->date()->value();
|
||||
})->data;
|
||||
|
||||
return min($sessionDates);
|
||||
});
|
||||
|
||||
return $orderedSeason;
|
||||
};
|
||||
|
|
@ -1,5 +1,27 @@
|
|||
<?php
|
||||
|
||||
function filterFutureEvents($events) {
|
||||
$futureEvents = new Pages();
|
||||
|
||||
foreach ($events as $event) {
|
||||
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
||||
|
||||
$sessionDates = $sessions->map(function($session) {
|
||||
return $session->date()->value();
|
||||
})->data;
|
||||
|
||||
$futureDates = array_filter($sessionDates, function ($date) {
|
||||
return strtotime($date) > time();
|
||||
});
|
||||
|
||||
if (!empty($futureDates)) {
|
||||
$futureEvents->add($event);
|
||||
}
|
||||
}
|
||||
|
||||
return $futureEvents;
|
||||
}
|
||||
|
||||
function buildFieldsString($requestFields) {
|
||||
$fields = [];
|
||||
foreach ($requestFields as $field) {
|
||||
|
|
|
|||
|
|
@ -20,23 +20,17 @@
|
|||
<?php snippet('calendar-strip') ?>
|
||||
|
||||
<?php
|
||||
$currentSeason = page('programme')->children()->first()->children();
|
||||
$orderedEvents = $currentSeason->sortBy(function ($event) {
|
||||
if ($event->isMapadoEvent() == 'true') {
|
||||
return $event->remoteSessions()->toStructure()->toArray()[0]['date'];
|
||||
} else {
|
||||
return $event->sessions()->toStructure()->toArray()[0]['date'];
|
||||
}
|
||||
},
|
||||
'asc'
|
||||
);
|
||||
$orderedSeason = $kirby->collection('ordered-season');
|
||||
$comingEvents = filterFutureEvents($orderedSeason);
|
||||
?>
|
||||
|
||||
snippet('events-grid', ['title' => 'Prochainement', 'events' => $orderedEvents->slice(0, 2), 'columns' => 2])
|
||||
<?php
|
||||
snippet('events-grid', ['title' => 'Prochainement', 'events' => $comingEvents->slice(0, 2), 'columns' => 2])
|
||||
?>
|
||||
|
||||
<?php snippet('newsletter-section') ?>
|
||||
|
||||
<?php snippet('events-grid', ['events' => $orderedEvents->slice(2, 3)]) ?>
|
||||
<?php snippet('events-grid', ['events' => $comingEvents->slice(2, 3)]) ?>
|
||||
|
||||
<?php snippet('callout') ?>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue