When creating FlyNodeType instance programmatically,
you need to set nodeType.ContentTemplate which is ITemplate, which is not trivial from my point.
I think you would better consider using a predefined template, but have visible=false for those controls/parts that you do not use in a node, so they do not get rendered.
To do this, you can handle NodeDataBound event and adjust its node.Controls collection depending on some condition.
Anyway, you may still be interested in implementing ITemplate, but I didn't google out anything simple so far to do this.