19 - Events Calendar Overview

Most active churches will have, at any given time, a number of special events going on that need to be communicated to members and potential visitors alike.  From a facilities perspective often there are large meeting spaces that need to have an availability calendar so members planning an event know when a particular space is available.  ExpressionEngine has some built-in calendaring capabilities that can, at times, meet these requirements.  In this chapter I’ll provide an overview of the EE calendaring capabilities, talk about it’s strengths and weaknesses, and cover some options to the EE calendar.

 

ExpressionEngine Calendar Overview
I know a number of you have been waiting for me to get to this part of the site build—and it has me a bit worried as I’m afraid the expectation is that I’ll show how to build this really great full-featured event calendar that slices and dices event information like something from Ronco.

The EE calendar just isn’t that complex, however, so I want to do a bit of work to manage your expectations before plowing into the code.  Let me lead off with an overview of the EE’s calendar function - a description I wrote in the comments on an earlier chapter in this series:

First - imagine a weblog. Now add an entry on the weblog.  It goes in with a publish date.  Many blogs have those little sidebar calendars that show you when posts were made - so if you posted an entry on the 6th of March that date would then become clickable.  Clicking on it would filter your current view down to just the entries posted on that date.

Got it?  Now - blow up that small calendar to be full-page, post some entries with future dates, and tell EE to show entries with future dates.  Throw the title of the post on the full-page calendar view. Link the title to another template that can show more details for one event.

That’s the essential EE calendar capability.  It’s basic weblog post information, plotted on a calendar view,  with the ability to show entries with future dates, and link to another template that can show all the content for that one event.

Advantages
There are a number of advantages to using EE for an event calendar.  First - you can offer content administrators a consistent publish and edit process and interface.  Entering an event is the same as a new ministry. 

Second - you can take advantage of categories or relationships to group event content together with other content.  I plan on doing that here, using relationships to tie an event to a ministry so that I can show specific upcoming events on a ministry page.

Third - you if go down the path of memberships on your site you can allow any registered member to submit a calendar event using a Stand-Alone Entry Form.  Those entries can then take advantage of Custom Entry Status so that the new submission goes to “pending” status and doesn’t appear on the site.  You can then implement an Entry Notification such that a calendar administrator would get an email when a new event is submitted.  The calendar administrator would then review the event and if approved set the status to “Open” which would cause it to display on the site.

Disadvantages
The native EE calendar doesn’t do recurring or multi-day events - but there is a third-party plugin that adds that capability - so you post an entry, some details about how it repeats, and then your event shows on the full-page calendar view multiple times.

The native weblog:calendar tag doesn’t support custom fields, which means that on the full-page calendar view you are limited to what can display for each event.  Options are title, author, and entry_id. There are ways around this restriction that aren’t too hard, so I’ll cover one here.

EE’s calendar also doesn’t, inherently, work with categories. In other words, you can’t assign categories to the weblog driving your event calendar and then use native EE tags to link to a categorized view of the overall calendar.  You can get to this functionality with a bit of php trickery, but for this series I’ve decided to stay within the bounds of native EE functionality only.

There is no native iCal support - although there seems to be some movement in the forums around it.

Options
If native EE doesn’t meet your calendaring requirements the next option I’d suggest looking at is using a Google Calendar.  There is a relatively new Google Calendar Plugin for pulling information from a public calendar to EE.  However it doesn’t have much activity around it and I haven’t tested it—so don’t consider this link an endorsement.

Having Said All That
My plan here is to show the implementation of a simple event calendar using native EE tags.  I’ll push the bounds a bit, showing how to use entry_id as a bridge to pull custom fields to the full-page calendar view.  Other than that, this will be a very straightforward implementation.

In the Real World
My church started with an EE calendar - using the the repEEt plugin linked to above.  I also implemented a Stand Alone Entry Form with workflow to allow calendar submissions by any registered member.  It worked well when we had few events - but in the end having another location, more events, and ultimately issues relating to DST (some event times would respect DST, some wouldn’t) pushed us to use a Google calendar instead.

Category Navigation

<< Previous Entry   

Next Entry >>

 

Previous Comments

Picture of Cecily Walker

by Cecily Walker

Date: Wednesday, April 8th, 2009
Comment: #1

It seems that your church is now using a Google Calendar to manage calendar entries. Do you have a screenshot of the original calendar that was created using EE?

Thanks in advance.

Mike Boyink

by Mike Boyink (Author)

Date: Wednesday, April 8th, 2009
Comment: #2

Yes—We couldn’t get repeet and DST to play together. No screenshot—just picture a calendar that matches..:)

Picture of Jim Newbold

by Jim Newbold

Date: Thursday, April 23rd, 2009
Comment: #3

Hi Mike,

I have become one of your followers. :-)

Did you say that repeet doesn’t work with Daylight Savings Time? If so, I’ll have to work on another solution.

Thanks for the great series.

Mike Boyink

by Mike Boyink (Author)

Date: Thursday, April 23rd, 2009
Comment: #4

Hey Jim -

We just had issues with it on our church site and I just lost patience trying to figure them out.  We used both a SAEF and the CP and different events would transition fine but not all, and I couldn’t reason out why they wouldn’t all.

For our needs the Google calendar will be fine.

Picture of arshad

by arshad

Date: Tuesday, October 6th, 2009
Comment: #5

hi mike.. could u plz help me out with one thing. i want to have a event calender in which i can store the events at the runtime. means in the browser in the webpage, the administrator can add the events in the webpage itself when viewing the webpage in the browser.

Picture of therooster

by therooster

Date: Saturday, November 7th, 2009
Comment: #6

Mike,

I’m building a church site and want to have a list of events displayed by each month. By default, when the user goes to the calendar page events should show up for the current month.

I can’t seem to accomplish this with the regular weblog tag and I can’t get repeet to work at all. any ideas?  Do i just need to write a query directly to the db?

I’m trying to accomplish something like this:

http://www.hosannahouston.org/events.php

any help is appreciated.

Mike Boyink

by Mike Boyink (Author)

Date: Saturday, November 7th, 2009
Comment: #7

Take a look at the Weblog Implementation for the Train-ee Church site.  Essentially all you need to do is replicate the monthly archive view but make sure all tags have “show_future_entries=“yes” set.

Picture of therooster

by therooster

Date: Saturday, November 7th, 2009
Comment: #8

ah, duh - yep your right!! I know why I ddn’t think of that.

Thanks for your help.

Picture of therooster

by therooster

Date: Saturday, November 7th, 2009
Comment: #9

I looked at the month archive tag, and it does list all the entries by month on a page. But there is no way to limit that view for a single month, unless you have EE generate the list of months and the user clicks a specific month form the list. Does that make sense.

So again, I want to only display the current month’s events in a list on the calendar page. When u first open the page, the current month’s event’s are listed (like the calendar tag does, but only in a list view).

Mike Boyink

by Mike Boyink (Author)

Date: Saturday, November 7th, 2009
Comment: #10

So the view works, it’s just a matter of getting there w/o having to click a month in the list?

I’d look around the forums as I know this has come up and it’s a bit outside of what I’m demonstrating here in the Train-ee series.

However it seems like you could just look at the URL that the Monthly Archive link tag is generating, and create a link in your main nav that generates the proper link dynamically using the Current Time Global Variable formatted correctly using date variable formatting.

Picture of Peter

by Peter

Date: Tuesday, December 8th, 2009
Comment: #11

How do you display events for today or events this week.?

I am having trouble getting it to work for me.  I have tried display_by=“day” and start_on and stop_on functions but nothing seems to work..

Mike Boyink

by Mike Boyink (Author)

Date: Tuesday, December 8th, 2009
Comment: #12

Make sure you’ve configured the tag to show future events - but other than that it should all be pretty straightforward.

A post in the EE forums where you can show the code you’ve tried will probably be the best way to get help.

Picture of Chun Kit Chris Wong

by Chun Kit Chris Wong

Date: Wednesday, December 30th, 2009
Comment: #13

Hi Mike,
Is it possible that when creating an event, I can also assign an alarm (notification) to any specific groups?

For example, I have an event named men’s bible study which is held on January 10, 2010. and this event is specifically for a men’s group. But I want to remind them this event, so that I assign an alarm to automatically send them notifications 3 days in advance.

Can i implement such specific feature in EE?
Thanks a lot,
Chris

Mike Boyink

by Mike Boyink (Author)

Date: Wednesday, December 30th, 2009
Comment: #14

Hey Chris -

Keep in mind that EE is a simple event calendar.  For the functionality you are looking for you’ll need something much more advanced and (sounds like) with email list integration.  EE has simple mailing lists and simple events - but I know of no way to connect them either natively or with 3rd party tools.  I’ve heard rumblings of better event management modules for EE - but as yet unreleased.

Picture of Chun Kit Chris Wong

by Chun Kit Chris Wong

Date: Wednesday, December 30th, 2009
Comment: #15

Thanks a lot. If so, I don’t think I can have this client then. lol

If I hire someone to create this module, do you think it will be very time consuming and very expensive?

Thanks again

Mike Boyink

by Mike Boyink (Author)

Date: Wednesday, December 30th, 2009
Comment: #16

I really can’t say -  I’ve never been in the position of needing that done and hiring it out.

Picture of Joe

by Joe

Date: Tuesday, April 20th, 2010
Comment: #17

You mention that the EE calendar doesn’t inherently support categories, but I know a site running EE and the calendar that has views of the calendar that change (though I don’t know how they’ve implemented it). I’m struggling to find a way to filter by categories for my calendar built using a weblog. Has anything changed where this is possible? I can’t see why categories works for weblogs but not for calendars. I actually have it showing the calendar category title based on the link clicked, but the content of the actual calendar does not get filtered. It’s just always showing all events.

Picture of Boyink

by Boyink

Date: Tuesday, April 20th, 2010
Comment: #18

Hey Joe - I’ve seen people use some jQuery effects that look like category sorting.  That’s the only solution I know - but note that Solspace has come out with a Calendar module now.

Add Your Comment

Commenting is not available in this channel entry.

Unless otherwise stated all content is © Michael Boyink of Train-ee.com & Boyink Interactive. Please don't steal - I've got kids to feed...

dy>