Автоматическое назначение шаблона из родительского шаблона

Шаблон по умолчанию для блока

Допустим, block-данному, находящемуся в шаблоне aa.tpl, желательно назначать шаблон bb.tpl. В этом случае, в файле aa.tdd нужно написать:

aa.tdd
<?php
    $types[1] = "block template('bb')";
    //Вариант автоматического назначения:
    //$types[1] = "block template('bb') option('new')";
?>

aa.tpl
<?php echo "
    {$dat['edit']}<br>
    $dat[1]<br>
" ?>

bb.tpl
<?php echo "
    {$dat['edit']}
    Это - шаблон по умолчанию 
" ?>

Шаблон по умолчанию для корневого блока страницы

Точно так же, если заранее известно, что страница, вернее ее корневой блок, будет иметь какой-то определенный шаблон, то в файле дескриптора (.tdd) шаблона, в котором находится ссылка на эту страницу, нужно написать:

aa.tdd
<?php
    $types[1] = "page template('mypage')";
    //Вариант автоматического назначения:
    //$types[1] = "page template('mypage') option('new')";
?>

aa.tpl
<?php echo "
    {$dat['edit']}<br>
    <a href='?page=$dat[1]'>ссылка</a><br>
"; ?>

mypage.tpl
<?php echo "
    {$dat['edit']}
    Это - шаблон по умолчанию 
"; ?>

Внимание! Путь к шаблону

Распространена ошибка, когда навигационный шаблон находится в подпапке, и из него указывают для назначения шаблон страницы, находящийся, как правило, в корне папки templates. В этом случае не забывайте применять правильный путь к шаблону (абсолютный или относительный). Пример:
navbar/dropdown.tdd
$types[1] = 'page(mypage, new)';
$types[1] = 'page(/mypage, new)';

Опции назначения шаблона

Выше был рассмотрен, так сказать, полуавтоматический режим назначения шаблонов, когда в процессе замены шаблона система будет только предлагать к назначению тот или иной шаблон.

Можно пойти дальше, и в дескрипторе за пользователя выбрать и опцию назначения шаблона. В этом случае, системе будет уже досточно данных для автоматического назначения шаблона. Как задать эти параметры (шаблон и опцию), читайте в статьях Данные типа block и Данные типа page.

При разработке шаблонов, разработчику сайта желательно везде, где можно, указывать шаблон по умолчанию и опцию назначения шаблона. В любом случае, если назначенный шаблон не подойдет, его можно заменить.


См. также