Multiple previews with different templates

I’m having two use cases for this question and hope someone can give me a hint.

I’m trying to achieve two different previews from the panel for “events” (German: Veranstaltungen).
One for the Event-Page itself (Blocks here, typical modular landingpage look) and one for the teaser shown on parent page, so that editors could check the look of the teaser before publishing. All data of the event page and the teaser is stored in one file.
I thought about adding a parameter to the preview URL, which is checked in the template, let’s say &version=teasers or &version=page. And then add links to that in an info-field in the panel, to make things easier for the editors.
But when i place all the logic in the event template it gets long and confusing.
I haven’t learned about controllers yet, would that be the correct way? Or routes? Or is there a way to call a template (not snippet) from another template, like a php include?

Idea:

<?php 
if( param("v") === "teasers" || get("v") === "teasers" ) { 
 //include event-teaser template
} else {
 //include event-page template
}    
?>

My second use case is similar. Here i’m trying to build a multi-mime-type E-Mail in three formats: An HTML-Version with tracking-links for the mailsystem we use, a textversion and a webversion, which is like the HTML-E-Mail-Version but without the tracking-code, without unsubscription links and with a simple, general salutation not personalized. As a first step i want to have three previews or outputs.

I started with something liek this, but it just feels wrong:

<?php 
//nach vorn wegen Text, sonst Einrückung
if( param("v") === "text" || get("v") === "text" ) { header("Content-Type: text/plain"); $kirby->response()->type('text/plain'); foreach ($page->segments()->toBlocks() as $block) { snippet('blocks/text/' . $block->type(), [ 'block' => $block,'version' => 'text']); }  snippet('text/mail-footer'); 
    die();
} 
// HTML version here 
?>

What is the best or a better approach to this?

Thank you.

Probably not, because controllers are for logic, not for html content and I guess that’s what’s different between the two versions.

I’d use different snippets, no reason not to.