Nie wiem czy dobrze rozumiem Twój problem, bo opisałeś to bez szczegółów... ale napiszę Ci pseudokod, który CHYBA odpowiada na Twój problem.
function top() {
echo '<nav id="menu">...</nav>';
}
function footer() {
echo '<footer>...</footer>';
}
function view(string $filename, array $data) {
top();
require_once $filename . '.php';
bottom();
}
Jak wywołujesz view() to zawsze masz tam pasek menu i footer (nie trzeba tego HTML kopiować do każdego template), a dodatkowo w array $data masz wszystkie dane do konkretnych szablonów - czyli jak sobie zrobisz require_once 'test.php' a w tym teście masz echo $data['test'], to powinno zadziałać. Podstawy PHP ogólnie.
Napisz czy to odpowiada na Twój problem, bo nie jestem pewny czy rozumiem :D przy okazji zapraszam na mój YT @DamianoSmok