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>