Skip to content

Latest commit

 

History

History
67 lines (57 loc) · 2.21 KB

widget.md

File metadata and controls

67 lines (57 loc) · 2.21 KB

Синтаксис

{* Объявление виджета *}
{? widget <name>;
	<widget_body>
end ?}
{* Использование виджета *}
{* Развернутая форма *}
<< <name> [attr1=<expression1> [attrN=<expressionN> [...]]] >>
	<body>
<</ <name> >>
{* Краткая форма (без тела) *}
<< <name> [attr1=<expression1> [attrN=<expressionN> [...]]] />>

Описание

Объявляет новый html-подобный элемент, который можно использовать в тексте шаблона.

Пример

{* Объявление виджета *}
{? widget page ?}
<html>
	<head><title>{{ attrs.title }}</title></head>
	<body>{{ body }}</body>
</html>
{? end ?}

{* Использование виджета *}
<<page title="Домашняя страница">>
	<h1>Домашняя страница</h1>
	Контент
<</page>>

Объявление виджета

Сразу после объявления виджета он становится доступен для использования в тексте. Тело виджета не имеет доступа к аргументам шаблона, вместо этого имеется доступ к следующим аргументам:

  • attrs - ассоциативный массив установленных атрибутов в месте использования виджета
  • body - внутренний контент виджета, определяется в месте использования

Вложенные виджеты

В теле виджета можно объявить вложенные виджеты, которые можно будет использовать только внутри родительского виджета.

Пример

{? widget mylist;
	widget row ?}
		<div class="mylist-row">{{ body }}</div>
	{? end ?}
	
	<div class="mylist">
		{{ body }}
	</div>
{? end ?}

{* Использование *}

<<mylist>>
	<<row>>Строка 1<</row>>
	<<row>>Строка 2<</row>>
<</mylist>>

<<row>>Некорректное использование, row здесь не определен<</row>>