Для настроек блока прекрасно подходят экстраданные самого блока. Для настройки сразу нескольких блоков можно создать отдельный блок настройки. Главное условие - этот блок должен выводиться раньше управляемых блоков. Данные с настроечного блока в настраиваемый блок можно передать с помощью глобальных переменных.
Перепишем немного код применения экстраданных для настройки блока.
<?php
$types = [
1 => 'block(setting)',
2 => 'block(photos)',
];
<?=$dat[2]?>
<?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',
];
<?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'])) ...
В качестве админ. панели в этом примере мы использовали просто окно редактирования блока. Перейдем теперь к построению настоящей панели управления.