Данные типа block

Блок - это основная структурная единица страницы сайта. Страница обычно собирается из нескольких блоков, но она может состоять и из единственного блока. В каждый блок может быть вложен другой блок.

Block-данное объявляется и вставляется в шаблон так же, как и обычные данные. Как и у обычных данных, у block-данного могут быть параметры.

Ниже приведен пример шаблона странички с менюшкой в верхней части, содержательной частью и дополнительным блоком внизу (шаблоны самих вложенных блокам не приведены).

page.tpl
<?php echo "

    {$dat['edit']}
    <div>$dat[1]</div>
    <div>$dat[2]</div>
    <div>$dat[2]</div>

"; ?>

page.tdd

<?php

    $titles[1] = 'Блок с меню сайта';
    $titles[2] = 'Содержательный блок';
    $titles[3] = 'Дополнительный блок';

    $types[1]="block template('menu') option('delegate')";
    // Будет автоматически делегирован блок с шаблоном menu

    $types[2]="block template('content')";
    // Пользователю будет рекомендовано назначить шаблон content

    $types[3]="block";
?>

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

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

Такое различное поведение блоков обусловлено наличием в объявлении block-данного дополнительных параметров:

Параметры block-данного

Имя параметраНазначение параметраЗначения (аргументы) параметраПримечания
templateШаблон по умолчанию для вложенного блока.Имя шаблона
(имя файла шаблона без расширения)
Если примененять этот параметр, то пользователю во время назначения шаблона не придется выбирать шаблон - он уже будет выбран в панели. Пользователю останется только выбрать опцию "новый" или "делегировать"
optionОпция назначения шаблона для вложенного блока.

Применение этого параметра вместе с параметром template приведет к автоматическому назначению шаблона, то есть, назначать шаблон вручную вообще не придется.

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

Если нет ни одного делегированного блока, то будет делегирован блок (с таким же шаблоном), созданный самым первым.

Если же вообще нет ни одного блока с таким шаблоном, то шаблон будет просто назначен (как с параметром new).

Рекомендуем всегда ставить эту опцию для главного меню сайта.

fieldN
где N – номер поля
Задает параметры block-данного, находящегося в поле N шаблона, указанного в параметре template (см. первую строку данной таблицы).Имя шаблона и опция назначения шаблона (через запятую)Подробности на странице: "Применение параметра field в данных типа block"

Параметры block-данного фактически имитируют действия пользователя при назначении блоку шаблона, когда тому приходится сначала выбирать шаблон, а затем назначать его с одной из двух опций. В самом деле, почему бы не избавить пользователя от этих манипуляций для тех случаев, когда заранее известно, что для тех или иных блоков нужно назначать определенные шаблоны! Если разработчик шаблона предусмотрит автоматическое назначение шаблонов или, хотя бы, шаблоны по умолчанию, то сборка сайта станет гораздо удобнее. В любом случае, "навязанные" вам шаблоны можно всегда переназначить.


Короткая форма записи параметров template и option

Существует альтернативная форма записи, когда названия параметров template и option не используются. Вместо этого соответственно имя шаблона и опция записываются в скобках после имени типа (то есть, после слова block):

.tdd

<?php
    $types[1]="block template('menu') option('delegate')";
    $types[1]="block('menu','delegate')";

    $types[2]="block template('content')";
    $types[2]="block('content')";

    $types[3]="block";
?>

Если параметр option не использовался, то он не пишется и в альтернативной форме записи.

Если не использовался и параметр template, то после слова block вообще не нужно писать ничего.


См. также