是否可以动态切换Lift提供的网页标题,而无需为该特定情况编写额外的代码段?
一个选项当然是<lift:mySnippet><title>Default Title</title></lift:mySnippet>
但我认为<head_merge><title>New Title</title></head_merge>
可能有一个选项(插入第二个标题节点)。
我不喜欢第一种方法,因为我不想将所有标题生成逻辑都放在一个片段中,并询问我在哪个页面等。
答案 0 :(得分:8)
您是否尝试过使用模板?
您可以在templates-hidden/default.html
中定义模板,如下所示:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:lift="http://liftweb.net/">
<head>
<title>
<lift:bind name="title" />
</title>
...
</head>
<body>
<lift:bind name="content" />
</body>
</html>
并在index.html
中使用它,例如:
<lift:surround with="default">
<lift:bind-at name="title">Home</lift:bind-at>
<lift:bind-at name="content">
my content
</lift:bind-at>
</lift:surround>
您可以在此处找到有关模板的更多信息:
http://www.assembla.com/spaces/liftweb/wiki?id=liftweb&wiki_id=Templates_and_Binding
答案 1 :(得分:1)
一种方法是使用Menu.title
代码段。
在bootstrap/liftweb/Boot.scala
中,您使用网页名称定义站点地图:
class Boot {
def boot {
// ...
def sitemap = SiteMap(
Menu.i("Home") / "index",
Menu.i("About") / "about")
// ...
}
}
在templates-hidden/default.html
中,您可以使用代码段:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:lift="http://liftweb.net/">
<head>
...
<title class="lift:Menu.title">AppName:</title>
...
然后页面标题将是:“AppName:Home”和“AppName:About”。如果您使用
,这很好<span class="lift:Menu.builder"></span>
构建菜单,因为页面标题与菜单中使用的相同。
另一种方法是使用head merge并在页面的html中定义标题。要实现此目的,您必须从<title>
中删除templates-hidden/default.html
标记,并在内容块中添加<head>
或<head_merge>
标记:
<!DOCTYPE html>
<html>
<body class="lift:content_id=main">
<div id="main" class="lift:surround?with=default;at=content">
<head_merge>
<title>TITLE OF THIS PAGE HERE</title>
</head_merge>
...