There is probably no best answer. There are a number of ways to structure craft to support this, and any answer is going to be highly subjective. A lot will depend on the relationships between the elements, and what the requirements of the different elements are (i.e. how complex, etc).
One option to get the desired uri pattern (i.e. /sermons/series-name/sermon-name
) would be to do something like this:
- Create a single called
sermons
that would be the landing page for the sermons section.
- In the
sermons
template you would display the sermons overview content, and retrieve and display the 'series' (perhaps ordered by date, or category, or whatever).
- Create a structure to house 'series', with at least 2 levels, with the series collection at the root and the individual series items (a.k.a. sermons), beneath. The series collection and series items would each have a different
Entry Type
so that fields could be unique for collection vs. items, and you can display a different template depending on the Entry Type.
- Set the uri for the 'series' structure to be 'sermons/{slug}' and for nested entries to be
{parent.uri}/{slug}
.
- You could also create additional levels for video, artwork, etc. which would get added to the uri automatically (where each level or type of content might get assigned its own Entry Type based on the type of content your working with) (i.e.
/sermons/series-name/sermon-name/videos/video-name
).
There are lots of other options and considerations also, but this might be an easier one to deal with, without having to create your own custom routes to get the uri pattern you are looking for.
This assumes of course that an individual series item (or sermon) belongs to only one series. If not, then you may want to consider other options, such as creating a channel for 'series' and a channel for 'sermons' and then relate the two using an entries
FieldType.
You can even take the structure concept further and map the whole site using a single structure, with different entry types for the different types of pages. This makes the nav very easy to build and the sections/pages can all be moved around easily. And you can always pull in other content into those pages from other channels as needed. OR create a structure for the rest of the site and structure for the series, where the uri's match up nicely.
Basically. Lot's of options.