I've come up with a bit of hack to get some functionality Custom Functionality. Unfortunately the Virtual Page uses the Page Template Class by default.
If you add the Following to your VirtualPage.php you can get some better rendering control:
function index() { // index runs if no other function is being called - it is like a second init()
$realPage = $this->ContentSource()->ClassName;
if($realPage != "Page") {
return $this->renderWith("Virtual".$realPage);
}
else {
return Array();
}
}
You need to then create a root template with the name Virtual(Original Page Class). Unfortunately this all but eliminates some of the modularity the template system provides. In this template then wrap anything that calls Custom Data with
<% control ContentSource %> <% end_control %>
This will let you access all the custom Data from the Original Pagetype.
I still haven't figured out a way to enable Custom Forms and Functions beyond copying to the VirtualPage type and modifying their calls to use the ContentSource Method