为什么我的“apply”标签不再适用于Heist 0.11.0.1?

时间:2013-05-29 18:15:07

标签: haskell heist

我最近升级了我正在使用的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>

1 个答案:

答案 0 :(得分:6)

apply标签就像任何其他标签一样。它除了包含在Heist中之外没有任何特殊状态。因此,您必须在HeistConfig中绑定该拼接。如果您使用的是解释模板,那么您可以这样做:

HeistConfig defaultInterpretedSplices [] [] [] templates

如果您使用的是编译模板,请使用:

HeistConfig [] defaultLoadTimeSplices [] [] templates