ハムレットテンプレート内のさまざまな場所でいくつかのHTMLスニペットをレンダリングする必要があります

StackOverflow https://stackoverflow.com/questions/7337341

  •  27-10-2019
  •  | 
  •  

質問

私の中で 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すべてのページで同じマークアップ構造を持つこと。

役に立ちましたか?

解決

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top