Я делаю общий шаблон .default, а в остальных шаблонах в хедере:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();?>
<?include(S_P_LAYOUT.'/header.php');?>
<div class="page">
<!-- HEADER :: START-->
<header class="header">
<div class="container">
<div class="header__wrapper">
<a class="header__logo" href="#"><img src="<?=P_IMAGES?>/logotype.svg" alt=""></a>
<?include(S_P_INCLUDES.'/menu-top.php');?>
<div class="header__links">
<?include(S_P_INCLUDES.'/menu-links.php');?>
</div>
<button class="hamburger hamburger--spin" type="button" js-hamburger><span class="hamburger-box"><span class="hamburger-inner"></span></span></button>
</div>
</div>
</header>
<!-- HEADER :: END-->
<div class="page__content">
<?$APPLICATION->ShowPanel()?>
и аналогично в футере:
какой-то отличающийся код
<?include(S_P_LAYOUT.'/footer.php');?>
Соотвественно S_P_LAYOUT - это константа с абсолютным путем к папке шаблона .default
Это вариант номер один (и вобще говоря вы можете вложить так сколько угодно шаблонов).
Второй вариант - использовать общие включаемые области во всех шаблонах.