Блок для настройки других блоков

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

Перепишем немного код применения экстраданных для настройки блока.

wrap.tdd (контейнер)
<?php
$types = [ 
    1 => 'block(setting)',
    2 => 'block(photos)',
];
wrap.tpl
<?=$dat[2]?>
setting.tdd (настройки)
<?php
$titles = [
    1 => 'Ширина фото',
    2 => 'Высота фото',
    3 => 'Фото не обрезать',
];
$types = [
    1 => 'smallint(4) unsigned not null default 400',
    2 => 'smallint(4) unsigned not null default 300',
    3 => 'tinyint(1) unsigned not null default 0',
];
setting.tpl
<?php
foreach ($dat as $f => $v)
    $GLOBALS['setting'][$f] = $v;

photos.tdd

<?php
$width  = $GLOBALS['setting'][1] ?: 400; 
$height = $GLOBALS['setting'][2] ?: 300;
$x = $GLOBALS['setting'][3] ? 'x' : '';

$titles = [
    1 => 'Фото'
];
$types = [
    1 => 'file '.$x.'thumbnail(crop, '.$width.','.$height.')'
];
$params = [
    'multi-record' => true
];

Если какой-либо из рабочих блоков используется еще где-то на другой странице, то для версии на данной странице можно пользоваться условием: if (isset($GLOBALS['setting'])) ...

В качестве админ. панели в этом примере мы использовали просто окно редактирования блока. Перейдем теперь к построению настоящей панели управления.