@Bobotron Yeah, easily. It looks atrocious in the code, and it gets worse the more conditions you want to add, but if you have a good text editor with bracket matching, it's easy enough to write. You just need the ParserFunctions extension (see your Special:Version page). You set up your template as normal, but you wrap your include statement in an #if tag.
If you have people writing content directly into their template:
{{
That will check the contacts parameter for text. If it finds no such parameter, it will sub in a blank space (the default behavior is to print "{{{contacts}}}"). The #if statement checks the parameter for content, and if it finds anything other than a blank space, it will print the parameter.
If you have people making subpages and want to exclude subpages that don't exist:
{{
This will check for the existence of Stacy/Contacts, and print it if it exists. (I left the string in the "else" section for the sake of readability. It is by no means required, but it's harder to read a bunch of consecutive brackets and pipes.)
It sounds like you want to have pages able to be displayed or hidden. That's also doable.
{{
This will check to see if the contacts field is set to display. If so, it will then check for Stacy/Contacts, and display it if it's there. (I left the strings in for the sake of readability. They are by no means required, but it's harder to read a bunch of consecutive brackets and pipes.)
You'll want to finish it by making it so that it automatically subs in the character name for the page.
{{
The {{{PAGENAME}}} magic word returns the name of the page the template is on. However, it will return the full path for the name if it's on a subpage, so you might want to use {{{BASEPAGENAME}}} or {{{ROOTPAGENAME}}} for extra specificity.
If you want to make a table that changes based on which fields are filled out, that's another level of complexity. It's not hard, but it requires that you first build your skeleton and then go through and replace everything with code, because nobody who isn't a savant can just write that shit out. You can see an example of a table that morphs based on parameters here (the subtitle section disappears completely if it doesn't exist).