Если не подходят что то из готовых шаблонизаторов типа
Smarty
Можете сделать свой на основе PHP функций работы с буфером вывода:
ob_start
ob_get_clean
/**
* Функция загрузки шаблона
*
* @param string $template Путь до файлов шаблона
* @param mixed[] $data Данные для подстановки в шаблон
* @return string Возвращает готовый код шаблона
*/
function render_template($template, $data) {
ob_start();
if (file_exists($template)) {
extract($data);
require($template);
} else {
print('Нет файла шаблона: '.$template);
}
$html = ob_get_clean();
return $html;
}
Пример использования:
$content = render_template('templates/main.php', ['title' => 'Главная страница');
echo $content;
Код main.php
<html>
<head>
<title><?=$title?></title>
</head>
</html>