fenom/docs/tags/macro.md
Ivan Shalganov b34a1e1013 Update docs
2014-01-28 19:31:26 +02:00

46 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Tag {macro} [RU]
================
Макросы - фрагмент шаблона который можно повторить сколь угодно раз и в каком угодно месте.
Макросы не имеют общего пространства имен с шаблоном и могут оперировать только переданными переменными.
### {macro}
Обявление макроса происходит при помощи блочного тега `{macro}`
```smarty
{macro plus($x, $y, $z=0)}
x + y + z = {$x + $y + $z}
{/macro}
```
Вызов макроса происходит при помощи строкового тега `{macro}`. Аргументы передаются стандартно, как атрибуты в HTML тегах
```smarty
{macro.plus x=$num y=100}
```
На данный момент рекурсивный вызов макроса не поддерживается.
### {import}
Для использования маросов в другом шаблоне необходимо их импортировать при помощи тега `{import}`
```smarty
{import 'math.tpl'}
```
При импорте можно указать дргое пространство имен что бы можно было использовать одноименные макросы из разных шаблонов
```smarty
{import 'math.tpl' as math}
...
{math.plus x=5 y=100}
```
Пространство имен макросов может совпадать с названием какого-либо тега, в данном случае ничего плохого не произойдет: будет вызван макрос, а тег не исчезнит
При необходимости можно импортировать только необходимые макросы, явно указав в теге `{import}`
```smarty
{import [plus, minus, exp] from 'math.tpl' as math}
```