Общая структура данных шаблона была построена на предыдущем уроке и пора определяться с формой вывода.
Используем CSS сетку
Шаблон урока будет иметь фиксированную ширину. В настоящее время имеется тенденция использовать в дизайне веб страниц три типа шаблонов: шаблон с фиксированной шириной, резиновый шаблон и эластичный шаблон.
- Шаблон с фиксированной шириной имеет жестко заданную ширину элементов.
- Резиновый шаблон может изменять ширину элементов в зависимости от размеров экрана браузера.
- Эластичный шаблон похож на резиновый, но диапазон изменения ширины у него ограничен максимальным и минимальным размером.
Несмотря на кажущееся неоспоримое преимущество резинового шаблона, он имеет существенный недостаток. Элементы могут стать такими широкими, что читать информацию будет неудобно. Поэтому в примере к уроку используется шаблон с фиксированной шириной. Однако переделать его в резиновый или эластичный шаблон вполне возможно. Для этого, в качестве величин, определяющих ширину элементов нужно использовать проценты.
От табличного дизайна разметки мы отказываемся сразу, так как она достаточно трудоемка в обслуживании. Любое изменение потребует тщательной проверки взаимодействия всех тегов tr
и td
. Кроме того, табличный шаблон будет вызывать затруднения у тех посетителей, которые используют программы для чтения страниц с экрана. Обычно текст страницы читается слева-сверху по направлению вправо-вниз. В результате содержание левой боковой панели будет перемешиваться с содержанием центральной части и правой боковой панели, что затруднит восприятие информации. Самыми важными читателями, которые столкнутся с данной проблемой будут роботы поисковых серверов.
Идея заключается в том, чтобы построить внешний вид шаблона с использованием правил CSS. Таким образом можно добиться кросс-браузерной совместимости шаблона и разделения данных и презентации. Воспользуемся системой 960.gs - рабочей средой, которая позволяет быстро создать пространственную структуру шаблона. На сайте RUSELLER.COM есть уроки, которые раскрывают возможности данной системы. Для нее существует CSS генератор, с помощью которого можно быстро и наглядно создать набор стилей для нужной структуры страницы.
В нашем шаблоне используется сетка из 12 столбцов общей шириной 960 px.
Заголовок страницы будет растягиваться на все 12 колонок:
1 |
< div id = "header" class = "container_12" ></ div > |
Для трех основных разделов внутри контейнера мы создадим сетку:
01 |
< div id = "content" class = "container_12" > |
02 |
< div id = "" class = "grid_3 " > |
03 |
< jdoc:include type = "modules" name = "left" /> |
05 |
< div id = "" class = "grid_6" > |
06 |
< jdoc:include type = "modules" name = "breadcrumbs" /> |
07 |
< jdoc:include type = "component" /> |
09 |
< div id = "" class = "grid_3" > |
10 |
< jdoc:include type = "modules" name = "right" /> |
Между колонками в сетку будет оставаться пространство размером в 10 px. Оно генерируется рабочей средой 960.gs, а код воспринимается всеми браузерами (в том числе и Internet Explorer).
После применения классов к нашему шаблону раздел body
файла index.php будет иметь вид:
02 |
<div id= "header" class = "container_12" > |
03 |
<?php echo $app ->getCfg( 'sitename' );?><br /> |
04 |
<jdoc: include type= "modules" name= "top" /> |
06 |
<div id= "content" class = "container_12" > |
07 |
<div id= "sidebar" class = "grid_3 " > |
08 |
<jdoc: include type= "modules" name= "left" /> |
10 |
<div id= "maincolumn" class = "grid_6" > |
11 |
<jdoc: include type= "modules" name= "breadcrumbs" / |
12 |
<jdoc: include type= "component" /> |
14 |
<div id= "sidebar-2" class = "grid_3" > |
15 |
<jdoc: include type= "modules" name= "right" /> |
18 |
<div id= "footer" class = "container_12" > |
19 |
<jdoc: include type= "modules" name= "footer" /> |
21 |
<jdoc: include type= "modules" name= "debug" /> |
Файл CSS сгенерированный для нашего шаблона системой 960.gs называем grid.css и помещаем в каталог /RusellerSimple/css. Обычно нет необходимости ужимать его сильно. Основная часть кода, важная для нашего шаблона выглядит так:
07 |
margin-left : 0 !important ; |
10 |
margin-right : 0 !important ; |
12 |
.grid_ 1 ,.grid_ 2 ,.grid_ 3 ,.grid_ 4 ,.grid_ 5 ,.grid_ 6 ,.grid_ 7 ,.grid_ 8 ,.grid_ 9 , |
13 |
.grid_ 10 ,.grid_ 11 ,.grid_ 12 ,.grid_ 12 { display : inline ; |
19 |
.container_ 12 .grid_ 1 { |
22 |
.container_ 12 .grid_ 2 { |
25 |
.container_ 12 .grid_ 3 { |
28 |
.container_ 12 .grid_ 4 { |
31 |
.container_ 12 .grid_ 5 { |
34 |
.container_ 12 .grid_ 6 { |
37 |
.container_ 12 .grid_ 7 { |
40 |
.container_ 12 .grid_ 8 { |
43 |
.container_ 12 .grid_ 9 { |
46 |
.container_ 12 .grid_ 10 { |
49 |
.container_ 12 .grid_ 11 { |
52 |
.container_ 12 .grid_ 12 { |
Все достаточно просто. Все блоки сдвигаются влево, различная ширина элементов сетки устанавливается на основе нужного размера базовой ячейки. В нашей решетке с 12 колонками grid_6 означает шесть колонок, которые будут иметь ширину 460 px (с учетом отступа). Использование такой системы дает очень наглядный пример преимущества CSS правил для форматирования содержания над таблицей. Получается меньше кода и его легко поддерживать.
Чтобы правила действовали в шаблоне файл grid.css необходимо подключить в заголовке нашего index.php, сразу после подключения template.css:
1 |
<link rel= "stylesheet" href= "<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type= "text/css" /> |
2 |
<link rel= "stylesheet" href= "<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/grid.css" type= "text/css" /> |
CSS по умолчанию
Весь выше описанный код CSS касался только размещения информации на странице. Нужно позаботиться и о форматировании текста.
Добавим несколько общих стилей и глобальный сброс в основной файл template.css (файл с таким именем подключается в основном файле нашего шаблона index.php).
05 |
h 1 ,h 2 ,h 3 ,h 4 ,h 5 ,h 6 ,p,blockquote,form,label,ul,ol,dl,fieldset,address { |
17 |
font-family : Verdana , Arial , Helvetica , sans-serif ; |
Данный код осуществляет глобальный сброс CSS для нашего шаблона. Такое действие помогает добиться единообразной работы кода в разных браузерах.
Затем мы устанавливаем размер шрифта 76%, опять же для единообразного отображения в разных браузерах. Для размера шрифта используются единицы em (1 em = размеру текущего шрифта документа) . Высота строки устанавливается равной 1.3 em. Использование единиц em позволяет обеспечить простую настройку размера шрифта страницы без существенных искажений шаблона.
Взглянем, как выглядит наш шаблон после установки правил CSS. Для большей наглядности в левую часть были добавлены модули основного меню и формы регистрации на сайте, а в правую - модуль с меню информации о Joomla.
В заголовке сайта выведено его название, сформированы три колонки, и они расположены рядом одна с другой.