memento75
(Thomas John)
December 15, 2025, 2:59pm
1
Hi all,
I’m using typo3 Calendarize 14.0.1. in a typo3 12.4.16 installation.
I would like to set up a “Year” view but this should start from the current month and then display the next 12 months. (e.g. current month today = December 2025). Alternatively it would also be sufficient if I can set the starting date manually, e.g. start from 2025-12-01.
How do I achieve that? There’s no hint in the documentation and also no fields like “start date”, I only see those in the “List” view, but not the “Year” view.
Thanks!
Thomas
spyker
(Tim Lochmüller)
December 16, 2025, 8:50pm
2
Hey @memento75
it is not possible “out of the box”. The current controller select the “current year” by only “Y”.
$date = DateTimeUtility::normalizeDateTime(3, 1, $year);
$now = DateTimeUtility::getNow();
if (0 === $year || $now->format('Y') === $date->format('Y')) {
$date = $now;
}
if ($this->isDateOutOfTypoScriptConfiguration($date)) {
return $this->return404Page();
}
$indices = $this->indexRepository->findYear((int)$date->format('Y'));
$this->eventExtendedAssignMultiple([
'indices' => $indices,
'pagination' => $this->getPagination($indices),
'date' => $date,
], __CLASS__, __FUNCTION__);
return $this->htmlResponse($this->view->render());
}
You can overwride this, with the event after it…
if (0 === $year || $now->format('Y') === $date->format('Y')) {
$date = $now;
}
if ($this->isDateOutOfTypoScriptConfiguration($date)) {
return $this->return404Page();
}
$indices = $this->indexRepository->findYear((int)$date->format('Y'));
$this->eventExtendedAssignMultiple([
'indices' => $indices,
'pagination' => $this->getPagination($indices),
'date' => $date,
], __CLASS__, __FUNCTION__);
return $this->htmlResponse($this->view->render());
}
/**
* Quarter action.
but you also need some adaption in the template, because you cannot use the loop.monthInYear ViewHelper of EXT:calendarize anymore.
<c:link.year pageUid="{settings.yearPid}" date="{date -> c:dateTime.modify(modification: 'first day of next year')}" section="c{contentObject.uid}">
>
</c:link.year>
</f:if>
</f:if>
</th>
</tr>
</thead>
<tbody>
<tr>
<c:loop.monthsInYear date="{date}" iteration="year">
<td>
<f:render partial="Month" arguments="{date: year.calendar.date, indices:indices, ignoreSelectedDay: year.calendar.ignoreSelectedDay, contentObject: contentObject, pagination: pagination}" />
</td>
{f:if(condition: '{year.calendar.break3} == 0', then: '</tr><tr>')}
</c:loop.monthsInYear>
</tr>
</tbody>
</table>
</f:section>
</div>
So… Adapt the selection of events based on the internal Event & Adapt the rendering in the template.
mabolek
(Mathias Bolt Lesniak)
February 3, 2026, 3:24pm
3
Hi @memento75 !
Was the answer from @spyker helpful for you? I would love to be able to mark this thread as solved.