Skip to main content

Month object

A Month object holds in itself a list of all Events that fall into this month, as well as gives the possibility to iterate over Week object's that fall into the range of this Month object.

Properties

  • date
    • A Date object of the starting date of the event duration
    • For a Month object of April 2023, this would return the Date object of 2023-04-01
  • startDate
    • Basically the same as the date property
  • endDate
    • The ending date of the Month object's month, e.g - 2023-04-30 in this case
  • previousDate
    • Returns a Date object of the previous month relative to the date property, e.g. 2023-03-01 in this case
  • nextDate
    • Returns a Date object of the next month relative to the date property, e.g. 2023-05-01 in this case
  • events
    • Contains a list of Events that fall into this Month object's range
  • eventCount
    • The number of events in the events property

Methods

  • dateRange(int before, int after)
    • Returns a list of Date objects ranging before number of months before date and after number of months after date
    • E.g. month.dateRange(6, 6) would return a list starting from 2015-10-01 and ending in 2023-10-01
  • containsDate(dateObject)
    • Returns true if the dateObject provided is within the Month object's date range
    • E.g. month.containsDate(event.startDate) would return true if the Month object would be April 2023, and the event.startDate would be 2023-04-15, but false if the event.startDate would be 2023-03-31

Usage in Templates

Iterate through weeks and days of the month

{% set month = craft.calendar.month({
date: "today",
calendar: ["holidays", "sports"]
}) %}

{% for week in month %}
{% for day in week %}
{% for event in day.events %}
<div style="{{ event.calendar.color }};">
{{ event.title }}
</div>
{% endfor %}
{% endfor %}
{% endfor %}

Iterate through all events in the month

{% set month = craft.calendar.month({
date: "today",
calendar: ["holidays", "sports"]
}) %}

{% for event in month.events %}
<div style="{{ event.calendar.color }};">
{{ event.title }}
</div>
{% endfor %}

Show only events which start in weekends

{% set month = craft.calendar.month({
date: "today",
calendar: ["holidays", "sports"]
}) %}

{% for event in month.events if event.startDate.weekend %}
<div style="{{ event.calendar.color }};">
{{ event.title }}
</div>
{% endfor %}