Быстрый старт. Практический пример по насадке сайта

На печать

Создаем шаблон страницы

Рассмотрим создание шаблона на примере простой верстки:

<html> 
<head> 
<title>Заголовок окна</title> 
<meta http-equiv=content-type content='text/html; charset=utf-8'> 
<meta name="DESCRIPTION" content="описание"> 
<meta name="KEYWORDS" content="ключевые слова"> 
</head> 
<body leftmargin="0" topmargin="0"> 
<table width="100%" height="100%" cellpadding="0" cellspacing="0" border=0> 
<tr> 
<td bgcolor=#EFEFEF>&nbsp;&nbsp;&nbsp;</td> 
<td bgcolor=#EFEFEF width=200 valign=top><br> 
- <a href="/about">О компании</a><br> 
- <a href="/service">Услуги</a><br> 
- <a href="/price">Продукция</a><br> 
- <a href="/news">Новости</a><br> 
- <a href="/contact">Контакты</a><br> 
</td> 
<td>&nbsp;&nbsp;&nbsp;</td> 
<td valign=top> 
<br><h2>Заголовок страницы</h2><br> 
<div align="justify"> 
ПРИМЕР ТЕКСТА. ПРИМЕР ТЕКСТА. ПРИМЕР ТЕКСТА. <br> 
ПРИМЕР ТЕКСТА. ПРИМЕР ТЕКСТА. ПРИМЕР ТЕКСТА. <br> 
ПРИМЕР ТЕКСТА. ПРИМЕР ТЕКСТА. ПРИМЕР ТЕКСТА. <br> 
</div> 
</td> 
</tr> 
</table> 
</body> 
</html>

Что бы создать шаблон нам необходимо создать файл с расширением *.tpl в папке /template/structure и скопировать в него наш HTML-код. После этого созданный шаблон необходимо зарегистрировать в системе. Для этого нужно зайти в настройки модуля Структура и на вкладке «Шаблоны страниц» добавить новый шаблон, указав его название и имя файла.

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

<html> 
<head> 
<title>%title%</title> 
<meta http-equiv=content-type content='text/html; charset=utf-8'> 
<meta name="DESCRIPTION" content="%description%"> 
<meta name="KEYWORDS" content="%keywords%"> 
</head> 
<body leftmargin="0" topmargin="0"> 
<table width="100%" height="100%" cellpadding="0" cellspacing="0" border=0> 
<tr> 
<td bgcolor=#EFEFEF>&nbsp;&nbsp;&nbsp;</td> 
<td bgcolor=#EFEFEF width=200 valign=top><br> 
%structure.menu()% 
</td> 
<td>&nbsp;&nbsp;&nbsp;</td> 
<td valign=top> 
<br><h2>%h1%</h2><br> 
<div align="justify">%content%</div> 
</td> 
</tr> 
</table> 
</body> 
</html> 

А теперь очень важный момент. Как вы уже поняли, вместо указанных макросов система будет подставлять определенный контент. Что именно подставит система, зависит от назначения используемого макроса. Иными словами, если вы хотите что бы та или иная часть шаблона формировалась динамически, вам необходимо заменить этот кусок HTML-кода на соответствующий макрос. Подробней о назначении каждого макроса вы сможете прочитать в разделе «Справочник по макросам системы».

Оформляем меню

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

По этому, что бы выше описанный пример заработал, мы должны для макроса %structure.menu()% указать, как именно оформлять пункты меню. Для этого необходимо создать файл шаблона меню /template/structure/menu/default.tpl и прописать в нем следующий код:

$TEMPLATE[1]['frame'] = <<<END
%list%
END;

$TEMPLATE[1]['list_active'] = <<<END
> <a href="%obj.url%"><b>%obj.name%</b></a><br>
END;

$TEMPLATE[1]['list'] = <<<END
- <a href="%obj.url%"><b>%obj.name%</b></a><br>
END;

С виду пугающе, но на самом деле все просто. Нам представлено три блока, каждый из которых отвечает за определенную часть шаблона меню. Сам шаблон указывается между ограничителями <<<END и END;

У каждого блока свое название и назначение: 

Теперь разберемся, как все это работает. Система при построении меню, перебирает  список страниц, которые могут в нем выводиться. Одна за одной страницы оформляются в зависимости от состояния и складываются в общий список. При этом макросы %obj.name% и %obj.url% заменяются соответственно на название и ссылку текущего пункта меню. Весь полученный код вставляется вместо макроса %list%.Таким образом, получается меню, которое потом вставляется в шаблон страницы.

Сейчас мы создали меню с одним уровнем вложенности. Давайте попробуем создать меню с подуровнями. Посмотрите еще раз на наш код. Номер в квадратных скобочках перед названием блока говорит о том, для какого уровня меню описывается шаблон. Соответственно что бы создать еще один уровень нам нужно в шаблон вставить еще три блока и указать где будут выводиться подразделы в шаблоне первого уровня. Вот, что у нас должно получиться:

$TEMPLATE[1]['frame'] = <<<END
%list%
END;

$TEMPLATE[1]['list_active'] = <<<END
> <a href="%obj.url%"><b>%obj.name%</b></a><br>
%sub_menu%
END;

$TEMPLATE[1]['list'] = <<<END
> <a href="%obj.url%">%obj.name%</a><br>
%sub_menu%
END;

$TEMPLATE[2]['frame'] = <<<END
%list%
END;

$TEMPLATE[2]['list_active'] = <<<END
>> <a href="%obj.url%"><b>%obj.name%</b></a><br>
END;

$TEMPLATE[2]['list'] = <<<END
>> <a href="%obj.url%">%obj.name%</a><br>
END;

Теперь вместо макроса %sub_menu% будут выводиться подразделы, оформление которых прописано в блоках с номером 2. Структура этих блоков полностью такая же, как и у блоков первого уровня. Точно таким же способом мы можем увеличить вложенность меню до 3-х, 4-х и т.д. уровней. Вам всего лишь нужно будет описывать блок шаблона для каждого уровня.

Но что если нужно создать неограниченную вложенность? Это опять же просто. Система при построении меню в случае нехватки уровней берет последний описанный уровень. Главное что бы в нем был прописан макрос %sub_menu%. Получается, что для построения меню любой вложенности необходимо описать шаблон хотя бы для первого уровня. Вы так же можете комбинировать способы построения меню. Например, описать несколько уровней явно, а последующие уровни будут выводиться в оформлении последнего уровня описанного в шаблоне.



Что-то не так? Напиши, учтем!