Как было указано в других статьях, набор страниц и блоков админки известен заранее, поэтому все страницы должны назначаться автоматически.
Приведенная здесь многостраничная админка строится на собственном корневом шаблоне, то есть, админка может быть сделана в стиле, отличном от остальных страниц сайта.
Все страницы админки будут собираться на шаблоне admin. Все остальные шаблоны, а именно: шаблон навигации (nav) и содержательные блоки (profiles, orders), нужно поместить в папку admin.
admin.tdd
<?php
$titles = [
1 => 'Блок навигации',
2 => 'Блок содержательный',
];
$types = [
1 => 'block(admin/nav,delegate)',
2 => 'block',
];
$params = [
'no-edit-buttons' => true,
];
?>
Файл admin.tpl не приводится.
nav.tdd
<?php
/**
* $templates array [$field => [$template, $name]]
* @var string $template Имя содержательного шаблона
* @var string $name Название пункта навигации
*/
$templates = [
1 => ['profiles', 'Мой профиль'],
2 => ['orders', 'Мои заказы'],
...
];
foreach ($templates as $field => $t) {
# Автоматическое назначение шаблонов корневым блокам и содержательным блоков
$types[$field] = 'page(admin,new) field2('.$t[0].',new)'
$titles[$field] = $t[1];
}
# Передаем данные в шаблон
$GLOBALS['admin/nav']['templates'] = $templates;
?>
nav.tpl
<ul class="nav nav-pills"> <?php foreach ($GLOBALS['admin/nav']['templates'] as $f=>$t) { $clas = ($dat[$f]==$page) ? ' class="active"' : ''; echo'<li'.$clas.'><a href="?page='.$dat[$f].'">'.$t[1].'</a></li>'; } ?> </ul>