在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
以在所有页面中具有相同的标记结构。
答案 0 :(得分:1)
我认为答案是定义除defaultLayout之外的函数。默认情况下,defaultLayout唯一不可思议的是子网站(例如,auth)和错误消息使用它。但是你可以定义一个“myDefaultLayout”来获取你想要的其他内容。您甚至可以定义一个辅助函数,将额外的块封装到一个块中,然后将其传递给defaultLayout。