|
Страница 8 из 9
Если нет модулей
Может сложиться ситуация, когда ни один из модулей не будет доступен для вывода (по разным причинам). Из-за этого соответствующая область может просто пустовать, бесполезно занимая пространство экрана.
Если Вы захотите, то сможете сделать так, чтобы при отсутствии модулей, область, предназначенная для их отображения, временно выделялась под пространство другим областям шаблона. Для этого необходимо изменить код, который уже приводился ранее, следующим образом:
<table width="100%">
<?php
if(mosCountModules('right')) {
$show=true;
$cspan=3;
}else{
$show=false;
$cspan=2;
}
?>
<tr>
<td colspan="<?php echo $cspan ;?>">
<?php
echo mosShowHead();
echo mosPathWay();
?>
</td>
</tr>
<tr>
<td width="15%"><?php echo mosLoadModules('left',0);?></td>
<td><?php echo mosMainBody();?></td>
<?php if($show){ ?>
<td width="15%"><?php echo mosLoadModules('right',0);?></td>
<?php } ?>
</tr>
<tr>
<td colspan="<?php echo $cspan; ?>">
<?php
echo mosLoadComponent('banners');
?>
</td>
</tr>
</table>
В этом примере функция mosCountModules выполняет проверку, есть ли для вывода модули в position='right'. В связи с тем, что область №3 является ячейкой всей таблицы, то нельзя не учитывать параметр colspan ячеек областей 1 и
5. Если условие ложно, т.е. кол-во модулей=0, то ячейка области №4 на экран не выводится вовсе, а значение colspan устанавливается равным 2. Иначе, colspan=3 и ячейка области №4 на экран выводится.
Несколько сложно и неудобно, так ведь?
Вот здесь мы приводим вас к выводу, что эти три строки одной таблицы могут быть всё же выполнены в виде отдельных таблиц. Тогда и код будет логичней и легче для восприятия. Смотрите, сначала «показываем» навигатор (путь сайта):
<table width="100%">
<tr>
<td width="100%">
<?php
echo mosPathWay();
?>
</td>
</tr>
</table>
Здесь выводим модули и контент:
<table>
<tr>
<td width="15%"><?php echo mosLoadModules('left',0);?></td>
<td><?php echo mosMainBody();?></td>
<?php if(mosCountModules('right')) { ?>
<td width="15%"><?php echo mosLoadModules('right',0);?></td>
<?php } ?>
</tr>
</table>
А здесь выводим компонент, отвечающий за баннеры:
<table>
<tr>
<td width="100%">
<?php
echo mosLoadComponent('banners');
?>
</td>
</tr>
</table>
|