jester here is how you will want to template it:
have a parameter that takes the name of a chunk: &template=`myChunk`
this chunk will need to have some placholders in it to output the information typically these are something like [+eventdate+], [+eventtitle+], etc...
Now in your code you will nedd to get the chunk specified from the parameter using the Modx api: $modx->getChunk($template)
you can put this in a conditional so that you can have a defualt layout
$userTemplate = $modx->getChunk($template)
if (!$userTemplate) {
$userTemplate = '<div>[+eventtitle+}</div>';
}
Then for each event you are outputting use str_replace to insert the correct data into the placeholders.
Hope that helps, I use a similar method in both Wayfinder & the FileDownlaod snippet if you want to give them a look over.