我最近升级了我正在使用的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>发布于 2013-05-30 22:39:46
应用标签是一个拼接,就像其他任何标签一样。除了包含在Heist中之外,它没有任何特殊的状态。因此,您必须在HeistConfig中绑定该拼接。如果你使用的是解释模板,那么你可以这样做:
HeistConfig defaultInterpretedSplices [] [] [] templates如果您使用的是已编译的模板,请使用以下代码:
HeistConfig [] defaultLoadTimeSplices [] [] templateshttps://stackoverflow.com/questions/16821082
复制相似问题