Ку всем.
Значитца так.
(пост будет обновляться)
На сей момент я сделал читалку конфигов модулей из каталога, потом по ним оно читает из БД, и будет грузит то, что есть и там и там.
Да, это избыточность - но это я проверяю работоспособность узлов.
Мысля такая возникла, как сделать так, чтоб модули разлетались по квадратам портала: надо каждому модулю сделать этакую стилевую загогулину, типа
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 -->
Это впоследствии, при загрузке портала, будет превращено в список стилей для всех подгруженных модулей, сообразно указаний в БД.

















