diff --git a/site/collections/termine.php b/site/collections/termine.php index 6e7e3e3..56b3868 100644 --- a/site/collections/termine.php +++ b/site/collections/termine.php @@ -1,4 +1,3 @@ - Kalender konnte nicht geladen werden.'; - - return; -} +// Cache für 24 Stunden (in Minuten) +$cacheDuration = 24 * 60; +$cacheId = 'google_calendar_events'; +$cache = kirby()->cache('pages'); // Termine parsen function parse_ics($ics) @@ -134,9 +130,26 @@ function parse_ics($ics) return $events; } -$events = parse_ics($ics); +return function () use ($cache, $cacheId, $cacheDuration) { + // Versuche Daten aus dem Cache zu laden + $events = $cache->get($cacheId); + + if ($events === null) { + // Wenn nicht im Cache, neu laden + $ics = @file_get_contents(CAL_URL); + + if (!$ics) { + // Fehler beim Laden (z.B. 429 Error) + return null; + } + + // Termine parsen + $events = parse_ics($ics); + + // In Cache speichern + $cache->set($cacheId, $events, $cacheDuration); + } -return function () use ($events) { return $events; }; diff --git a/site/snippets/home-termine.php b/site/snippets/home-termine.php index 016710c..e490ea6 100644 --- a/site/snippets/home-termine.php +++ b/site/snippets/home-termine.php @@ -1,33 +1,40 @@ +