Da bei diesem Kunden nur immer 1 Event pro Tag stattfindet, konnte ich es gut lösen.
Bin zwar noch nicht fertig, hier mal mein erster Lösungsansatz mit dem mini_cal Template, falls jemand anderes noch danach sucht. Der Link führt bei meiner Installation neu direkt zum Lesermodul.
Danke allen für eure Inputs!
HTML-Code:
<table class="minicalendar">
<thead>
<tr>
<th class="head previous"><?php if ($this->prevHref): ?><a href="<?= $this->prevHref ?>" title="<?= $this->prevTitle ?>" data-skip-search-index><?= $this->prevLabel ?></a><?php else: ?> <?php endif; ?></th>
<th colspan="5" class="head current"><?= $this->current ?></th>
<th class="head next"><?php if ($this->nextHref): ?><a href="<?= $this->nextHref ?>" title="<?= $this->nextTitle ?>" data-skip-search-index><?= $this->nextLabel ?></a><?php else: ?> <?php endif; ?></th>
</tr>
<tr>
<?php foreach ($this->days as $day): ?>
<th class="label<?= $day['class'] ?>"><?= mb_substr($day['name'], 0, $this->substr) ?><span class="invisible"><?= mb_substr($day['name'], $this->substr) ?></span></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php foreach ($this->weeks as $week): ?>
<tr>
<?php foreach ($week as $day): ?>
<?php
// Standard-Klasse setzen
$class = !empty($day['class']) ? ' class="' . $day['class'] . '"' : '';
// URL generieren, falls Events vorhanden
$url = '';
if (!empty($day['events']) && is_array($day['events'])) {
// Nimmt das erste Event des betreffenden Tages
$event = $day['events'][0];
// Array-Zugriff
$url = '/events/' . ($event['alias'] ?? '');
} elseif (!empty($day['href'])) {
// Fallback auf Standard
$url = $day['href'];
}
?>
<td<?= $class ?>>
<?php if ($url): ?>
<a href="<?= $url ?>" title=""><?= $day['label'] ?></a>
<?php else: ?>
<?= $day['label'] ?>
<?php endif; ?>
</td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>