I have a channel called "Courses" and it is using Matrix to have several "Lessons". I use Zoo Visitors, so I have members as channel entries. When a member signs up for a course, I want to follow if he/she completed the lessons of the course. When he/she completes all lessons under that course, then the course also will be marked as completed for this user. I can imagine how this would be done using database tables, but do you think if it can be handled using just channels/matrix/playa? Or module should be developed?


In theory that sounds possible. You'd probably have to create some custom fields in the Member channel (possibly again with Matrix) so you can assign "Courses" and the corresponding "Lessons" to them. You could then include a column for "Status" and indicate whether it's "not started", "started", or "complete". On the front-end you can then use a Safecracker form to change the status once the course has been completed. This could be either a hidden submission or a manual user action to indicate that they've completed the course.

I think the problem would be that in the Member entry you'd need to track Courses and Lessons separately so that each could have a status. I'm not sure that would work in a single Matrix field(?)

No doubt you'd get a better result with a custom module but it would also take considerably longer to put together so it's a tradeoff between whether you can get something to work with what you have (albeit maybe not quite tailored how you would like it in an ideal world) versus the time (and/or cost) it would take to put together a custom module.


I've actually built exactly this. In my Zoo Visitor fields I have the following fields:

  • 1x Playa Single Select for "Active Course"
  • 1x Playa Single Select for "Active Lesson"
  • 1x Matrix, with Playa Single Selects for "Finished Courses"

The next Lesson is selected based on a sort of "id" they all have, which are sequential.

  • Thx for the idea, but in my case lessons are not sequential. User can open start but not finish more than one lesson, and the lessons are not sequential. Jun 11 '13 at 4:14
  • I think in this case ExpressionEngine might not be the best fit, don't you think you'd be better of with a custom CodeIgniter (or Ruby on Rails) app?
    – Steven
    Jun 11 '13 at 10:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.