マクロ機能
テンプレートのパーツを共有できます。 ページ毎に異なる部分は、スロットとして定義することで対応できます。
マクロを定義する
マクロを定義するには、metal:define-macro を使います。 例えば、my_template という名前のマクロは次のようになります。
<div metal:define-macro="my_template">
    (省略)
</div>
マクロを利用する場所では、metal:use-macro を使います。
<div metal:use-macro="my_template" />
外部ファイルのマクロを参照できます。 次の例では、macro-files.html で定義された my_template を読み込みます。
<div metal:use-macro="macro-files.html/my_template" />
マクロ側にスロットを用意する
マクロ側にスロットを用意することができます。 マクロの一部(たいていはコンテンツ部分)を、読み込むテンプレート毎に変更することができます。 テンプレートを共通にし、<title>(の中身)をページ毎に変更する、といったことができます。
マクロ側には、metal:define-slot を利用します。
    <title metal:define-slot="mytitle">
      Place for the page title
    </title>
マクロ側には、metal:define-slot を使用します。
<head metal:define-macro="myheader">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" >
    <title metal:define-slot="mytitle">
      Place for the page title
    </title>
    (省略) 
</head>
呼び出し側は、metal:fill-slot を使用します。
<head metal:use-macro="header.html/myheader">
    <title metal:fill-slot="mytitle" tal:content="title" />
</head>
共通部分(上の例では、meta の文字コード)は、呼び出し側で一々書かなくても、共通の物が適用されます。