Me parece que necesita comenzar a implementar lo que se conoce como "separación de preocupaciones" entre su aplicación en general. Los ejemplos que la gente brinda sobre la creación de plantillas, en respuesta a su queja específica acerca de que los editores de la página rompan su código, son importantes, pero representan solo un ejemplo de esta táctica. A medida que su programa se hace más grande y más complejo, se vuelve más difícil de modificar y depurar, incluso si su diseñador no está rompiendo su código.
Probablemente, la separación más común es una división de tres vías entre datos, lógica y presentación como se describe en el patrón de diseño Model-View-Controller (MVC). No necesita un marco completo de MVC para implementar los mismos principios básicos. La idea es simplemente encapsular el código que trata con sus datos (modelo) en un solo lugar, el código que presenta estos datos al usuario (vista) en otro. Vincula ese código junto con el código que solo se ocupa de presentar los datos correctos al usuario correcto en el momento adecuado (controlador).
De su descripción, parece que tiene ahora un patrón Transaction Script, donde tiene un archivo php "dothis.php" que está cargado en el navegador, y todas las definiciones de función y HTML para la pantalla están juntas . Ya tiene funciones, por lo que ya está comenzando a encapsular elementos de lógica.
La forma en que abordaría esto sería, de acuerdo con las otras respuestas aquí sobre plantillas, es eliminar todo el HTML en otro archivo solo haciendo referencia a variables PHP simples y tal vez algunos bucles (pero con tan poca conmutación condicional como poder). Eso hará que la plantilla sea más fácil de leer y más difícil de romper. Cuando su editor de página quiera modificar el diseño, proporciónele ese archivo.
Luego, separa todas sus funciones de acceso a datos en otro archivo, idealmente creando una clase (o varias clases, dependiendo de cuán complejos sean sus datos y con qué frecuencia debe reutilizarlos).
En este punto, su "dothis.php" se ha reducido a tal vez algún código de configuración (que puede separar a una inclusión, y algún código de autenticación (que puede separar a su propia clase), y solo llamar a las funciones de acceso a datos y llamar al archivo de plantilla incluido. Su controlador en sí mismo se simplifica enormemente y es más fácil de administrar.
El diseñador todavía puede estropear cualquier cosa, a menos que tenga algunas medidas en su lugar. Si bien no me gusta especialmente Smarty, su capacidad para restringir el uso del PHP función por función o en conjunto es un buen ejemplo. Pero es verdad que al menos el trabajo del diseñador será más fácil si se separa el diseño. –