マクロ機能

テンプレートのパーツを共有できます。 ページ毎に異なる部分は、スロットとして定義することで対応できます。

マクロを定義する

マクロを定義するには、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 の文字コード)は、呼び出し側で一々書かなくても、共通の物が適用されます。

Copyright (C) 2003-2012. PHP で WEB 作成 All rights reserved.
  • よくある質問