Главная  /  Правка  /  История  /   /  Область пользователей

Темплейты: Основные принципы (v 1.x)

Базовая структура файла темплейта CppCMS

Собирая темплейты, мы кладем их контент в их собственный skin. Поэтому, собирая любой темплейт - мы указываем его имя skin'а как команду первого уровня. Каждый skin представлен раздельными namespace'ами в C++. Т.о. имя skin'а - в действительности является именем namespace'а C++.

Второй уровень - view (класс C++). Каждая view с ее собственным skin'ом представляет собой определенную страницу, которая должна рендериться. Каждый skin должен осуществлять виртуальную функцию render(), кроме случаев, когда она уже применялась в его родительском классе. Каждая view представляет собой отдельный класс, наследуемый из cppcms::base_view в самом верхнем родителе.

Например:

<% skin purple %>
  <% view master uses data::master %>
    <% template render() %>
    ...
    <% end template %>
  <% end view %>
<% end skin %>

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

            [master]
          /         \
    [page]           [summary]
    /    \           /       \
[post] [info.] [archive] [recent_posts]

Где master определяет основное оформление страницы --- тему. page используется для отображения основной страницы в блоге, на которой может быть post или info -- информационные страницы. С другой стороны summary - представляет собой список последних постов или архив по категориям.

Каждая наследумая view может переопределять свои родительские темплейты, которые в действаительности являются виртуальными функциями.

Синтаксис

HTML и разделение средств управления

Система теемплейтов CppCMS основывается на HTML-страницах с вставленными командами управления потоком между тегами <% %>. Каждая команда темплейта начинается с <% и должна закрываться %> в одной строке. Каждая команда темплейта должна закрываться этими "скобками".

Например --- правильный код:

<% if not empty Name %>
  Hello  <% Name %> 
<% else %>
  Hello Visitor
<% end %>

Неправильно совмещать различные команды. Например так:

Hello <% if not empty name ; name ; else %>Visitor<% end %>

Вы также не должны переносить команду на следующие строки. Следующее неверно:

<% if not empty
  name %> Not empty <% end %>

Символы внутри команд не должны содержать % или >. Их можно добавлять в двойных кавычках по правилам экранирования C++/C. Например:

<% number | intf("<%04x>") %>

Правила описания синтаксиса

Синтаксис описания команд темплейта делается следующим образом:

Проект

CppCMS является основой веб-разработки для выполнения ресурсоемких приложений.

Размещение

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Навигация

Главная страница



Валидация CSS | Валидация XHTML 1.0