一般的なパターンは、ボイラープレートを含み、HTMLタイプのパラメーターを受け取るテンプレートを作成することです。まあ言ってみれば:
main.scala.html
@(content: HTML)
@header
// boilerplate
@content
// more boilerplate
@footer
実際、このアプローチではヘッダーとフッターを分離する必要はありません。
UsersView.scala.htmlは次のようになります。
@main {
// all your users page html here.
}
UsersViewをパラメーターとして渡すことにより、mainでラップしています。
サンプルでこの例を見ることができます
私の通常のメインテンプレートはもう少し複雑で、おおよそ次のようになります。
@(title: String)(headInsert: Html = Html.empty)(content: Html)(implicit user: Option[User] = None)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@title</title>
// bootstrap stuff here
@headInsert
</head>
<body>
@menu(user)
<div id="mainContainer" class="container">
@content
</div>
</body>
</html>
このようにして、テンプレートはヘッドインサートとタイトルを渡し、ユーザーを利用可能にすることができます。もちろん、コンテンツも同様です。