足場サイトでyesod0.9.3を使用しています。結果のページにウィジェットを1回だけ含める(または、できれば、ウィジェットを1回だけ含めることができるようにする)方法はありaddScript
ますaddStylesheet
か?このような(依存関係の)ウィジェットはページハンドラーで呼び出すことができますが、これは、必要なときに呼び出すだけの自己完結型のエンティティとしての(依存関係のある)ウィジェットの概念全体を壊します。
例:
addCommonStyle :: Widget
addCommonStyle = toWidgetHead [lucius|.some-class {background: yellow}|]
styledP :: Text -> Widget
styledP t = do
addCommonStyle
[whamlet|<p .some-class>#{t}|]
getTestR :: Handler RepHtml
getTestR = defaultLayout $ do
styledP "First paragraph"
styledP "Second paragraph"
これにより、次のようなスタイルシートへのリンクを含むHTMLが作成されます。
.some-class{background:yellow}.some-class{background:yellow}
つまり、addCommonStyleは2回含まれています。