metal:use-macro
Этот атрибут вызывает макрос и включает результат его выполнения в текущий шаблон в то место, откуда он вызван
<span
tal:comment="шаблон main_menu требует переменную 'mdate'"
tal:define="mdate page/last_modified"
metal:use-macro="main_menu"
/>
Можно даже вызвать макрос из другого файла, просто дописав путь к нему:
<span metal:use-macro="site_macros.xhtml/main_menu"/>
При этом можно использовать всю гибкость подстановок переменных:
<span metal:use-macro="${design}/site_macros.xhtml/main_menu"/>
Макрос может вызывать самого себя. Таким образом, можно использовать рекурсию для вывода массивов:
<ul metal:define-macro="show-list">
<li tal:repeat="item list">
<tal:block tal:condition="php:is_array(item)" tal:define="list item" metal:use-macro="show-list" />
<tal:block tal:condition="php:!is_array(item)" tal:content="item" />
</li>
</ul>