| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
andylars 20.07.2015 19:52 / 20.07.2015 19:54
Подхожу к краеугольному камню - подхода к шаблонизации. Хочется простого, но элегантного и удобного.@main[]
# ...
^switch[$Url]{
^case[/;DEFAULT]{
^Tpl:MainGrid[
$.Pagename[Main page]
]
}
^case[/article]{
^Tpl:MainGrid[
$.Pagename[Article]
$.Content{^Tpl:Content_Article[]}
$.Footer{
^Tpl:Footer[
$.Year{ ^for[i](3;0){ ^eval(2015-$i) }[,] }
]
}
]
}
}
@CLASS
Tpl
@MainGrid[_param][locals]
$_slot[
$.Title[SiteName]
$.Header{^Tpl:Header[$.Size[big] ]}
$.Pagename[Undefined]
$.Content{^Tpl:Content_Main[]}
$.Footer[Copyright (c)]
]
^_slot.add[$_param]
<html>
<head><title>$_slot.Title</title></head>
<body>
$_slot.Header
<hr>
<h3>$_slot.PageName</h3>
$_slot.Content
$_slot.Footer
</body>
@Header[_param][locals]
$_slot[
$.Size[small]
]
^_slot.add[$_param]
^if($_slot.Size eq 'big'){
<h1>BIG Header</h1>
}{
<h2>Small Header</h2>
}
@Content_Main[]
<p>Main content</p>
@Content_Article[]
<p>Article content</p>
@Footer[_param][locals]
$_slot[
$.Year[2015]
]
^_slot.add[$_param]
<i>$_slot.Year</i>