I need to build out a site that features courses and lessons, each defined as a content type. I currently have the site running with lessons linked to courses using entity reference (entity reference field is in lessons) and use EVA to attach a view of lessons to each course. (see screen below for reference)
This works fine, however I now have a new requirement to allow lessons to be re-used across multiple courses. This means:
- Courses can contain multiple lessons
- Lessons can appear in more than one course
- Lessons appear in "sections" which are custom per course
- Lesson and section sort order is custom per course
- Courses need to be able to handle up about 150 lessons per course
Since lessons need to appear in sections, the link requires both a reference and a section. I've experimented building this out with field collections embedded in the course entity. This works pretty well, but performance degrades significantly after about 30 lessons are added to a course.
To avoid the performance problem, another approach I'm considering is to code a compound field (entity reference with a text field) that would be added as an unlimited value field to the course content type.
Before I try the compound field approach, I'm seeking input/advice on the architecture for this solution. Given the requirements, and available D7 functionality, what approach makes most sense?