Darum war meine Vermutung, dass etwas am neuen Aufbau nicht passt.
deine templateengine muss den php code evaluieren und dann erst zusammensetzen - file_get_contents() liest den inhalt, aber jagt ihn nicht mehr durch den php-interpreter
das ist üblicherweise der heikle punkt an einer templateengine
du hast einerseits den php-code der ausgeführt werden soll und andererseits das html, in welches das ganze eingekleidet werden soll
die frage ist, ob du nun mit dem php-code das html holst oder mit einem script den php-code und das html-zeug holst und dort beides zusammenfügst
prinzipiell ist php ansich als "templateengine" gedacht gewesen, weshalb erster variante näher liegt - nachdem sich php aber zunehmend zur objektorientierten programmiersprache hinentwickelt, ist zweitere lösung schon wieder fast schlauer ;)
zum parsen des codes kannst du require() anstatt file_get_contents() verwenden, alternativ bietet sich auch eval() an (hier solltest du aber insbesondere die warnhinweise lesen)