我最近升级了我正在使用的Heist版本。这主要是一个随意的决定,我仍然看到这一行动的后果,主要是在更令人愉悦的代码结构方面。
但是,我非常依赖模板中的“apply”标签来引入样板组件,例如我的站点标题和菜单。对我来说,典型的模板如下所示:
<html>
<head>
<title> <PageTitle /> </title>
<link rel="stylesheet" type="text/css" href="/styles/style.css" />
<link rel="alternate" type="application/rss+xml" title="${PageTitle} Feed" href="http://www.savannidgerinel.com/rss" />
</head>
<body class="center">
<apply template="header" />
<div id="content">
<h1><PageTitle /></h1>
<ul>
<PageMetadata />
</ul>
<PageContent />
</div>
</body>
</html>
而且,我现在正在加载这样的模板:
setup_heist template_dir = do
templates <- Heist.loadTemplates template_dir
hs <- Heist.initHeist (Heist.HeistConfig [] [] [] [] templates)
return hs
这与我以前加载模板的方式(仍使用loadTemplates
函数)没有太大的不同,但它是设置我不习惯的Heist状态的另一种方式。
但是,现在apply
个标签都没有任何效果。我的“包含”模板从不加载,在生成的HTML中我看到了:
<apply template='header'></apply>
答案 0 :(得分:6)
apply标签就像任何其他标签一样。它除了包含在Heist中之外没有任何特殊状态。因此,您必须在HeistConfig中绑定该拼接。如果您使用的是解释模板,那么您可以这样做:
HeistConfig defaultInterpretedSplices [] [] [] templates
如果您使用的是编译模板,请使用:
HeistConfig [] defaultLoadTimeSplices [] [] templates