5

我最近升级了我正在使用的 Heist 版本。这主要是一个武断的决定,我仍然看到该行动的后果,主要是在更令人愉悦的代码结构方面。

但是,我非常依赖模板中的“应用”标签来引入样板组件,例如我的站点标题和菜单。对我来说,一个典型的模板是这样的:

<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,但这是一种我不习惯的设置抢劫状态的不同方式。

但是,现在所有apply标签都没有任何效果。我的“包含”模板永远不会加载,并且在生成的 HTML 中我看到了这个:

<apply template='header'></apply>
4

1 回答 1

6

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

HeistConfig defaultInterpretedSplices [] [] [] templates

如果您使用的是已编译的模板,请使用以下命令:

HeistConfig [] defaultLoadTimeSplices [] [] templates
于 2013-05-30T14:39:45.700 回答