Для начала просто разбиваете все ваши файлы на 3 части: header, content, footer - создаете 3 файла *.tpl и кладете туда каждую из частей.
В бекенде нужен какой-то метод типа render (если движок самописный), которому передается название шаблона (основного), а он сам подключает header / footer соответственно до и после, а в середину подключает шаблон.
Далее уже можно каждую страницу (каждый смысловой шаблон) разбивать на блоки, которые могут использоваться повтороно в других шаблонах, и также класть эти блоки в отдельные шаблоны, а потом подключать их с помощью {include file=""}
Всё, что останется, это в методе render передавать в шаблон динамические данные, в случае со smarty - делать assign до рендеринга.