04 - Plotting Out the ExpressionEngine Architecture

Now that I’ve decided on an outline for our model Church site, I can plot out the backend components of ExpressionEngine, or the “ExpressionEngine Architecture” that will be required to power the front-end.


What I’ll do is move through the navigation item by item and list out the EE weblog, field groups, category groups, template groups and templates that I see this site needing.  This is usually a valuable exercise for me as it helps determine the scope of what I’m looking to build (and hence the time and cost for potential client work).  Just FYI - this is all subject to change as I actually do the implementation.

Home Page

  • Dedicated weblog
  • Simple Content field group with title and body fields
  • site template group
  • site/index template

The home page may prove interesting - depending on how the “Join Us” content works out the only unique content left on the home page might be the “Welcome” statement.


  • Dedicated weblog
  • Dedicated category group, categories TBD
  • Dedicated field group with title, summary, extended fields
  • Dedicated weblog template group
  • weblog/index template
  • weblog/comments template
  • weblog/rss template


  • Dedicated weblog
  • Dedicated field group with title, short description, long description, contact name / email / phone number fields
  • Dedicated ministries template group
  • A Categories Group that will be shared with Events
  • ministries/index template
  • ministries/detail template

I would have rather used relationships to drive the navigation as per this approach but if I use categories then the Events calendar can share them, and I can pull related Events to the Ministries page and vice/versa.  I’ll use this basic approach instead.


  • Dedicated weblog
  • Dedicated field group with title, short description, long description, worship times, worship location
  • Dedicated worship template group
  • worship/index template
  • worship/detail template

While thinking about this I realized that we would be entering worship times and descriptions in two places—the site home page and on the Worship page.  Since I’d rather maintain the content in one place I’ll look for a way to pull the Worship content to the home page.

Our Beliefs

  • Dedicated weblog
  • Simple Content Field group
  • Dedicated our_beliefs template group
  • our-beliefs/index template

I see this as being a simple static section of content, so will use this approach to the navigation and template design.


  • Dedicated weblog
  • Dedicated field group with title, duration, location, cost, contact name/email/phone, details.
  • Shared Category group with Ministries
  • Dedicated events template group
  • events/index template
  • events/detail template
  • events /rss template

Events will be pretty straightforward - with the caveat that most churches would probably want repeating events and so would need the Repeet plugin from Brent Wilson.  For the purposes of this tutorial however I’m trying to stick with native EE functionality.  I may cover Repeet - I haven’t decided yet..;)


  • EE Photo Gallery Module
  • gallery template group
  • gallery/index template
  • gallery/category template
  • gallery/image_medium template
  • gallery/image_full template

Audio Messages

  • Dedicated Weblog
  • Dedicated Field Group with title, summary and audio file fields
  • Speaker relationship field tied to Staff weblog - to pull in photo/bio of speaker one way and latest messages to their staff page the other way
  • audio-messages/index template
  • audio-messages/comments template

Staff Directory

  • Dedicated Weblog
  • Dedicated field group with title (name), position, bio, photo, contact email/phone number
  • Dedicated staff_directory template group
  • staff-directory/index template
  • staff-directory/detail template

The decision here is between using EE’s built in Member Management that provides for bios, etc, or using a custom weblog.  Since I don’t want to get into styling the member pages (which can be quite difficult), or using custom queries to pull the content out I’m just going to use a custom weblog instead.  I’ll plan to look for a way to tie these entries with a member log-in, so that when a staff member posts to the weblog a link to their staff bio page will be created dynamically.


  • contact template group
  • contact/index template


  • embeds template group with multiple templates for repeatable portions of the design
  • stylesheets template group
  • Miscellaneous Content weblog for storing footer text, user messages, etc.

In Summary
So in summary (if I can count right this morning) this implementation will require:

  • 9 Weblogs
  • 7 Field Groups
  • 2 Category Groups
  • 11 Template Groups
  • 21 “Main” Templates (not counting stylesheets or embedded templates etc)

If I look at adding some workflow in where new entries need to be approved then we’ll also be looking at a custom status group.  But otherwise I think that gets pretty close to laying out my ExpressionEngine Architecture requirements, and giving me an idea of the scope of the project at hand.  For those of you who’ve worked through the previous tutorial series on Boyink.com, this site is quite a bit larger.  The small business site built in that series has:

  • 6 Weblogs
  • 3 Field Groups
  • 2 Category Groups
  • 6 Template Groups
  • 12 “Main” Templates (not counting stylesheets, embedded, or search templates etc)

Huh..in doing this comparison I realized the template I’ve chosen for church site doesn’t feature a search box.  I’ll have to consider how to add a search function in as the amount of content the site could potentially house would make that worthwhile.  Search would probably be better than a Site Map, so I’ll probably replace SiteMap with Search in the utility navigation at the top of the page.  That will add another template group and a couple of templates to the requirements as well.

So there you have it - an overview of the work ahead and (I hope) some sense of the way I map out an ExpressionEngine Architecture against a proposed Site Map. 

And - at the risk of getting a bit commercial on you - I do want to take the opportunity to pitch the Designing an ExpressionEngine Architecture screencast available here on Train-ee.com as in it I discuss some of the reasoning I use in making these decisions.  Consider it an hour’s worth of EE consulting at a fraction of the cost…;) But I do think it’s a valuable resource if you are looking at starting a EE-based project but don’t have much experience with ExpressionEngine.

In the next installment I’ll actually start some of the site development by loading the static templates into ExpressionEngine.




Category Navigation

<< Previous Entry   

Next Entry >>


Previous Comments

Picture of tzTrainEE

by tzTrainEE

Date: Wednesday, April 9th, 2008
Comment: #1

The static content choices for ministries, look helpful in figuring out the differences between categories and relationships, and when to use what.

This straight foreward refined professional approach to implementing a website architecture makes is look so-o-o easy.

I’m checking out Windows Live Writer this week, have you ever used that Mike for remote publishing along with the EE Blogger/MetaWeblog API?
It allows posts to be edited locally or remotely, so far I’m liking it.

It belongs on a top 10 list of cool things to do with the full version EE since the metaweblog isn’t a part of the core, looks like another great benefit of the licensed versions.

Mike Boyink

by Mike Boyink (Author)

Date: Wednesday, April 9th, 2008
Comment: #2

No - I haven’t looked at Live Writer.  I’m always connected and prefer to just stay in EE.

Picture of tzTrainEE

by tzTrainEE

Date: Wednesday, April 9th, 2008
Comment: #3

Thanks Mike,
I just thought in the bigger picture it might appeal to some folks, by client request etc. looks like a nice option.

Picture of rlargett

by rlargett

Date: Wednesday, April 9th, 2008
Comment: #4

Hey Mike,

I’m lovin this series. If you don’t mind my asking, how do you work up a price out of these brake downs?

Mike Boyink

by Mike Boyink (Author)

Date: Wednesday, April 9th, 2008
Comment: #5

Well..I don’t want to give away *too* many secrets here..;)

Overall it’s a formula +- a gut feeling approach.  I have a rough “range of hours per main navigation item” number.  I’ll do that multiplication based on the site outline then add miscellaneous things like contact pages, search results, anything that looks like it’ll need some custom code, or any “member only” content, etc. I’ll also factor in some PM and training time.  Thats the formula part.

Then I’ll look at the resulting number and just see if it “feels right” - the gut feeling part. 

I’ll look back at some past jobs that feel about the same scope and scale as this one.  If something seems amiss I’ll tweak accordingly - which includes adding time if I feel like this particular client will be more time-intensive than others based on the interaction so far.

With paying work I quote a range of hours overall and I consider the top number a “not to exceed” number—so you may end up paying less but at least you’ll know the most that the project will cost (assuming the scope doesn’t change during implementation).

That help?

Picture of rlargett

by rlargett

Date: Thursday, April 10th, 2008
Comment: #6

Thanks Mike, that does help. I appreciate you taking the time to do this series and answer all our questions. Great job.

Mike Boyink

by Mike Boyink (Author)

Date: Thursday, April 10th, 2008
Comment: #7

Steve -

Don’t check out on me yet..;

I think you’ll see - once we bring in the HTML and break it up into EE templates and embedded templates that implementing a new section of the site really isn’t that tough.

In many cases it can be simply a matter of copying an existing template and changing some weblog references.

Mike Boyink

by Mike Boyink (Author)

Date: Tuesday, May 6th, 2008
Comment: #8

No mention of a Audio/Podcast index/detail. An oversight maybe?

Yes - sharp eye.  I’ve updated the post to include the items required for the audio podcast directory.  Thanks!

Picture of mediciglobal

by mediciglobal

Date: Thursday, May 8th, 2008
Comment: #9

You may want to include a field in the Audio Messages weblog to relate entries to the Staff Directory. That way you can pull the pastor’s pic, name, position, and bio into a sermon entry, and pull the pastor’s latest sermons into their details page. It may be helpful for churches that have several pastors.

Mike Boyink

by Mike Boyink (Author)

Date: Thursday, May 8th, 2008
Comment: #10

Great idea - thanks!

Mike Boyink

by Mike Boyink (Author)

Date: Saturday, May 10th, 2008
Comment: #11

Categories - maybe.  I’m already concerned about the size of this site and the time it’s going to require to get through it.  I’m not trying to build the perfect site, but rather look for a good balance of functionality and tutorial value. 

We’ll cover categories elsewhere so I’m not as concerned with getting them in here.  Also most sermon series run sequentially so a date-based sort would be almost the same.

On the speaker field I’d be concerned that something only useful a couple of times a year would be forgotten.  The guest pastor name can go in the title and if the relationship field is empty a conditional could just fill it in with “guest”.

Picture of Brian Kalwat

by Brian Kalwat

Date: Sunday, July 19th, 2009
Comment: #12

Is there anyway to fabricate the functionality where an Audio Sermons weblog would automatically create an itunes friendly XML file simply from copying the field group data? It would make updating sermons a lot easier as you would only have to update EE, and not also your XML for itunes… just a thought… :D

Mike Boyink

by Mike Boyink (Author)

Date: Sunday, July 19th, 2009
Comment: #13

Hi Brian -

Keep reading…;)

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...