AFAICT a virtual tiddler is a missing tiddler, to which a ViewTemplate is applied in order to make it behave like it would exist.
Here is an example I use in some TWs for tag tiddlers, virtual or not.
The cascade filter tiddler, tagged $:/tags/ViewTemplateBodyFilter
:
[<currentTiddler>is[draft]then{!!draft.of}else<currentTiddler>tagging[]then[$:/tw-FRed/template/viewtemplate-tag]]
And the (simplified) ViewTemplate itself:
\define btnCreateActions()
<$action-createtiddler
$basetitle=<<unusedtitle baseName:"$(titre)$" separator:"_">>
$template={{!!@instance.template}}
tags={{{[<titre>format:titlelist[]]}}}
>
<$action-sendmessage
$message="tm-edit-tiddler"
$param=<<createTiddler-title>>
/>
</$action-createtiddler>
\end
<$let titre={{{ [<currentTiddler>is[draft]then{!!draft.title}else<currentTiddler>] }}}>
!! Tiddlers tagged ''<<titre>>'':
<ul><$list filter="[<titre>tagging[]]"><li><$link/></li></$list></ul>
</$list>
<$button actions=<<btnCreateActions>> class="tc-btn-boxed">
{{$:/core/images/new-button}} Nouveau tiddler « <<titre>> »</$button>
</$let>
<$list filter="[<currentTiddler>!text[]]" variable=none>
---
<$transclude mode=block/>
</$list>
The filter first gets the real tiddler title, even in edit mode, then tests if it’s used to tag other tiddlers, then returns the ViewTemplate title.
The ViewTemplate displays a list of tagged tiddlers, a button to create a new tiddler (similar to “New here” view mode button) and, when the tag tiddler actually exists, displays its text field.
I find this useful with TOC sidebar tab: I can click any topic in the TOC and get a tiddler allowing me to add an item there, whether the tag tiddler is missing or not.
Fred