Ку всем.
Значитца так.
(пост будет обновляться)
На сей момент я сделал читалку конфигов модулей из каталога, потом по ним оно читает из БД, и будет грузит то, что есть и там и там.
Да, это избыточность - но это я проверяю работоспособность узлов.
Мысля такая возникла, как сделать так, чтоб модули разлетались по квадратам портала: надо каждому модулю сделать этакую стилевую загогулину, типа
1) Читаем из БД - получаем, например, данные
module_id = 1
module_name = fetcher
module_portal_name = M_FETCH
module_column = 2
module_row = 3
module_order = 1
module_group_ids = 1
module_status = 1
Это будут, например,
$mod_data['module_name'] = 'fetcher'
$mod_data['module_portal_name'] = 'M_FETCH'
$mod_data['module_column'] = '2'
$mod_data['module_row'] = '3'
То есть, модуль fetcher, будет отзываться на M_FETCH строка 3 колонка 2.
Планируется сделать, допустим, координаты в гридовой сетке портала, для квадратов (умозрительно, на данный момент):
Квадрат 1 (верхний слева):
Квадрат 2 (верхний посередине):
Квадрат 3 (верхний справа):
Квадрат 4 (средний слева):
Квадрат 5 (средний посередине):
Квадрат 6 (средний справа):
Квадрат 7 (слева снизу):
Квадрат 8 (снизу посередине):
Квадрат 9 (снизу справа):
Квадрат 10 (все три колонки сверху):
В php это будет где-то так:
<? switch($mod_data['module_column']) { case '1': $grid_column = 'grid-column:3/7'; // Квадрат 1 (верхний слева) break; case '2': $grid_column = 'grid-column:7/10'; // Квадрат 2 (верхний посередине) break; case '3': $grid_column = 'grid-column:10/15'; // Квадрат 3 (верхний справа) break; case '4': $grid_column = 'grid-column:3/7'; // Квадрат 4 (средний слева) break; case '5': $grid_column = 'grid-column:7/10'; // Квадрат 5 (средний посередине) break; case '6': $grid_column = 'grid-column:10/15'; // Квадрат 6 (средний справа) break; case '7': $grid_column = 'grid-column:3/7'; // Квадрат 7 (слева снизу) break; case '8': $grid_column = 'grid-column:7/10'; // Квадрат 8 (снизу посередине) break; case '9': $grid_column = 'grid-column:10/15'; // Квадрат 9 (снизу справа) break; case '10': $grid_column = 'grid-column:2/12'; // Квадрат 10 (все три колонки сверху) break; default : } switch( $mod_data['module_row'] ) { case '1': $grid_row = 'grid-row:5/7'; // Квадрат 1 (верхний слева) break; case '2': $grid_row = 'grid-row:5/7'; // Квадрат 2 (верхний посередине) break; case '3': $grid_row = 'grid-row:5/7'; // Квадрат 3 (верхний справа) break; case '4': $grid_row = 'grid-row:7/10'; // Квадрат 4 (средний слева) break; case '5': $grid_row = 'grid-row:7/10'; // Квадрат 5 (средний посередине) break; case '6': $grid_row = 'grid-row:7/10'; // Квадрат 6 (средний справа) break; case '7': $grid_row = 'grid-row:10/13'; // Квадрат 7 (слева снизу) break; case '8': $grid_row = 'grid-row:10/13'; // Квадрат 8 (снизу посередине) break; case '9': $grid_row = 'grid-row:10/13'; // Квадрат 9 (снизу справа) break; case '10': $grid_row = 'grid-row:2/4'; // Квадрат 10 (все три колонки сверху) break; default : } ?>
Из полученных из БД данных, мы сделаем что-то типа
<? $template->assign_block_vars('curr_module', array( 'M_NAME' => $mod_data['module_name'], 'S_ROW' => $mod_data['module_row'], 'S_COLUMN' => $mod_data['module_column'] )); ?>
а из этого, сделаем вставку в стиль, общий для всего портала:
// CSS портала - пусть будет файл portal_common_grid.css // наличие вставок из шаблона пусть не смущает - обрабатываться // будет предварительно шаблонизатором, как оно водится в phpBB <!-- BEGIN curr_module --> #{curr_module.M_NAME} { {curr_module.S_COLUMN} {curr_module.S_ROW} } <!-- END curr_module -->
Это впоследствии, при загрузке портала, будет превращено в список стилей для всех подгруженных модулей, сообразно указаний в БД.