1

私の中でdefault-layout.hamlet

!!!
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>#{pageTitle pc}
    ^{pageHead pc}
  <body>
    <div id="main">
      <div id="header">
        ????
      <div id="content">
        ^{pageBody pc}

ハンドラー関数から、????上記をいくつかのHTMLコンテンツに置き換える必要があります。

これはどのように行われますか?

ご入力いただきありがとうございます。

編集:

たとえば、djangoのテンプレートブロックに似た機能を探しています。テンプレート内にブロックを定義でき、このテンプレートをレンダリングに使用するハンドラーは、テンプレートのブロックに必要なコンテンツを入力できます。現在、yesodはテンプレートの本体に事実上単一のブロックを持っています。呼び出しによって「定義」されたもの^{pageBody pc}pageBody使用したい方法などで生成された出力を構築できることはわかっていますaddWidgetが、今は自分も出力する必要があります。すべてのハンドラーが同じものを出力する必要があるため、これは避けたいと思います<div id="header">。すべてのページのマークアップ構造。<div id="content">div

4

1 に答える 1

1

答えは、defaultLayout 以外の関数を定義することだと思います。defaultLayout の魔法のような唯一の点は、サブサイト (例: auth) とエラー メッセージがデフォルトでそれを使用することです。ただし、必要なコンテンツの他の部分を取得する「myDefaultLayout」を定義することもできます。余分なブロックを 1 つのブロックにラップして、それを defaultLayout に渡すヘルパー関数を定義することもできます。

于 2011-09-08T15:16:24.747 に答える