Привет!

Нам нравится создавать сайты для интересных людей: о социальной и необычной деятельности, об удивительных человеческих и нечеловеческих существах, о чудесах и странностях, о том, что снится и о том, что стучится в двери.

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

Таким образом мы вкладываемся в игры Духа, и мир для нас становится глубже.

Сокрытие колонок

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

В процессе разработки Joomla 1.5 в механизм управления шаблонами было внесено множество изменений и усовершенствований. Следующая цитата взята непосредственно блога разработчиков Joomla1:

Изменения в механизме управления шаблонами системы Joomla 1.5 можно разделить на две категории. К первой категории относятся изме­нения в реализации алгоритмов, которые уже имелись в Joomla 1.0, например по-новому реализована загрузка модулей. Ко второй категории

относится реализация новых, дополнительных возможностей, таких как возможность передачи параметров шаблонам... Краткий обзор:

Изменения в реализации

mosCountModules

Функция mosCountModules была замещена функцией $this->countModules, и в нее была добавлена поддержка условий. Это позволило упростить нахождение общего числа модулей в разных позициях шаблона и ре-ализовывать эту операцию всего одной строкой программного кода, например, вызов $this->countModules( 'useri + user2'); вернет общее число модулей в позициях useri и user2.

 

Примечание ---------------------------------------------------------------------------------------------------------------------------- .—

Дополнительную информацию вы найдете на форуме Joomla1.

 

В общем случае функцию CountModules можно использовать следующим образом:

<?php if($this->countModules('condition*)) : ?>

выполнить какие-либо действия <?php else : ?>

выполнить какие-либо другие действия <?php endif; ?>

Существует четыре возможных варианта условий. Для примера подсчи­таем число модулей на рис. 9.7. Для этого нужно вставить в файл index, php следующий фрагмент:

left=<?php echo $this->countModules('left*);?><br /> left and right=<?php echo $this->countModules('left and right*);?><br /> left or right=<?php echo $this->countModules('left or right*);?><br /> left + right=<?php echo $this->countModules('left + right*);?>

  • countModules( left'). Вернет число 4, потому что в левой колонке имеется 4 модуля.
  • countModules( 'left and right'). Вернет число 1, потому что модули имеются и в левой, и в правой колонках.
  • countModules( 'left or right'). Вернет число 1, потому что в левой или в правой колонке имеются модули.
  • countModules(' left + right'). Вернет число 7, потому что это общее число модулей в левой и правой колонках.

Сделать это можно несколькими способами. Можно было бы поместить условную инструкцию, скрывающую колонки, в основную часть стра­ницы и на базе информации о наличии колонок использовать различные стили для оформления содержимого. Чтобы максимально упростить решение этой задачи, я добавил несколько условных инструкций в тег заголовка <head>, которые (пере)определяют некоторые стили CSS:

<?рпр

if($this->countModules('left and right') == 0) $contentwidth = "100"; if($this->countModules('left or right') == 1) Scontentwidth = "80"; if($this->countModules('left and right') == 1) Scontentwidth = "60"; ?>

В результате мы получаем следующее:

  • Если в левой и в правой колонках ничего нет, центральная колонка должна занять 100% ширины страницы.
  • Если в левой или в правой колонке что-то есть, центральная колон­ка должна занять 80% ширины страницы.
  • Если в левой и в правой колонках что-то имеется, центральная ко­лонка должна занять 60% ширины страницы.

Теперь нам необходимо изменить элемент div с именем content в файле index.php:

<div id="content">

и добавить в файл layout.css следующие строки:

#content60 {float:left;width:60%;overflow:hidden;} #content80 {float:left;width:80%;overflow:hidden;} #content100 {float:left;width:100%;overflow:hidden;}

Условные инструкции PHP в теге заголовка должны располагаться ниже строки со ссылкой на файл template.ess, потому что, если в этих файлах встретятся два одинаковых правила CSS, для оформления будет использовано последнее встретившееся.

То же самое можно сделать, если заключить инструкции импорта тре­буемых файлов CSS в условную инструкцию if.

 

Совет ---------------------------------------------------------------------------------------------------------------------------------------------

При отладке условных инструкций в файл index.php можно добавить приведенную ниже строку, которая выводит полученное значение:

Ширина средней колонки составляет <?php echo Scontentwidth; ?>%

 

Полпути позади, но у нас еще остались пустые контейнеры <div>, где размещались колонки.