Repeating Events Using the Date Module in Drupal

Drupal Repeating Date

The date module for Drupal ( is generally brilliant and I've used it a number of times in the past. In Drupal 8 it is part of core which is testament to how useful a module it is.

However, I ran into an issue with the repeating date setting when using it for an event content type which was a bit of a pain to rectify. On my event I had set the date to "repeating" which in the input provides a variety of options to set the date to repeat. Its possible to set it to repeat every day, every week, every month or every year.

Setting up a weekly repeating date

You can set what day(s) of the week, which occurrence of that day in the month, stop after so many occurrences or on a particular date. You can also set to include or exclude certain dates.

Setting up a monthly repeating date

When I added, my only concern was whether it was too many options for a user to deal with, but it was all hidden until ticking the "repeat" box and so I decided it was okay. However, there is one big drawback, you cannot alter the time for the occurrence. It wasn't until an instance of this being required that I noticed the issue, but for me (in this installation anyway) it was a deal breaker.

So to resolve this, I wanted to switch to just allowing unlimited number of values. Unfortunately I couldn't just change it in the content type as there were many events already created. I also didn't want to have to edit the events. So I ended up creating a new content type with all the same fields except for the date. I created a new date field with no repeating option but unlimited values. I then had to edit all my views to include the new content type. Finally I redirected the links to create events to the new content type.

Unlimited date values solution

The transition has been very smooth and I feel better having it working correctly. The repeating date option might still be useful in some instances, but I guess only when time will always be the same or doesn't come into play at all.