Самая распространенная задача, с которой сталкиваешься при создании сайта − сделать так, чтобы у всех страниц было одинаковое оформление. Возьмем для примера дизайн этого сайта. Шапка, подвал, левая и правая колонки, полоса навигации в шапке − все это должно выглядеть одинаково на всех страницах сайта, которых не менее десятка. Как же быть? Копировать один и тот же HTML-код в десять мест − недопустимо. Если вы захотите через неделю что-то изменить в дизайне сайта, а еще через неделю − что-то добавить, вы очень быстро заметите, что все ваши страницы начали выглядеть по-разному. :)
Типичное решение, которым пользуются в таких случаях − это использовать для хранения оформления сайта два дополнительных шаблона, которым обычно дают названия "header" и "footer". Первый − для хранения шапки сайта, второй − для хранения подвала. Код страниц в этом случае выглядит примерно так:
<!-- Вставка общей шапки -->
{insert header}
<!-- Центральная часть страницы располагается между шаблонами header и footer -->
Добро пожаловать на сайт!
<!-- Вставка общего подвала -->
{insert footer}Шаблон header:
<html>
<body>
<!-- Здесь можно вставить шапку сайта и навигацию -->
Шаблон footer:
<!-- Здесь можно вставить подвал сайта -->
</body>
</html>
Увы, но такой вариант не является полноценным решением. Дело в том, что весь дизайн оказывается разнесенным по двум шаблонам, без учета парности структур и тегов, грубо говоря − все открывающие теги у вас окажутся в шаблоне header, все закрывающие − в шаблоне footer. В нашем случае еще и левая колонка окажется в конце шаблона header, правая − в начале шаблона footer. Оформление центральной части страницы (если оно есть) также окажется разорванным на две части и разбросанным по двум шаблонам. Это неудобно.
PHPC предлагает совершенно новый способ решения проблем однотипного оформления страниц: вместо того, чтобы "выдергивать" из страницы повторяющиеся фрагменты и выносить их в отдельные шаблоны, он предлагает механизм наследования шаблонов.
Для того, чтобы понять, как работает наследование шаблонов, вспомним, как этот принцип работает в программировании: сначала вы пишете базовый класс с базовым набором функций, затем пишете один или несколько производных классов, у которых есть свой собственный код, плюс они автоматически наследуют код из базового класса, повторять который снова и снова уже не нужно.
В PHPC эта схема работает аналогичым образом: вы пишете базовый шаблон, в котором содержится только основное оформление страницы (шапка сайта, подвал, колонки, навигация, в общем, все, кроме центральной части), затем пишете шаблон страницы, или производный шаблон, в котором содержится только центральная часть страницы.
Базовый шаблон (обычно называется general):
<html>
<body>
<!-- Здесь можно вставить шапку сайта и навигацию -->
<div>Шапка сайта</div>
<!-- А здесь в производных шаблонах будет центральная часть страницы. -->
<!-- Чтобы PHPC знал, куда ее подставлять, помечаем область особым тегом -->
<area:content/>
<!-- Здесь можно вставить подвал сайта -->
<div>Подвал сайта</div>
</body>
</html>
Шаблон страницы:
<!-- Производный шаблон состоит только из центральной части... и все! -->
<area:content>
Добро пожаловать на сайт!
</area:content>
Как видите, отныне весь дизайн вашего сайта находится в одном месте, без нарушения парности тегов, без выкрутасов типа "голова отдельно, ноги отдельно". Если вам необходимо изменить дизайн сайта − вы просто правите базовый шаблон, и изменения входят в силу сразу на всех страницах вашего сайта. В то же время шаблоны страниц оказываются полностью очищенными от базового оформления. Все, о чем надо помнить − это всегда помечать тегами <area:content>...</area:content> центральную часть страницы, а также указывать имя базового шаблона в свойствах шаблона производного, чтобы движок знал, что от чего наследовать.