需要在hamlet模板内的不同位置呈现几个html片段

时间:2011-09-07 16:28:43

标签: yesod hamlet

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以在所有页面中具有相同的标记结构。

1 个答案:

答案 0 :(得分:1)

我认为答案是定义除defaultLayout之外的函数。默认情况下,defaultLayout唯一不可思议的是子网站(例如,auth)和错误消息使用它。但是你可以定义一个“myDefaultLayout”来获取你想要的其他内容。您甚至可以定义一个辅助函数,将额外的块封装到一个块中,然后将其传递给defaultLayout。