2011-02-15 84 views
4

是否可以动态切换由Lift提供的页面的标题,而无需为该特定情况编写额外的代码片段?使用电梯更换<title>

一个选项当然是<lift:mySnippet><title>Default Title</title></lift:mySnippet>,但我认为可能有一个选项沿着<head_merge><title>New Title</title></head_merge>(插入第二个标题节点)的行。

我不喜欢第一种方法,因为我不希望把所有的标题产生逻辑到一个单一的片段,并问我是什么样的页面上等

回答

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

+0

哦,当然!谢谢 – 2011-02-15 21:10:59

1

单程i s使用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:首页” 和“APPNAME:关于”。这很好,如果你使用

<span class="lift:Menu.builder"></span> 

建立菜单,因为页面标题将在菜单中使用相同。

另一种方法是使用head merge并在页面的html中定义标题。对于这个工作,你必须从templates-hidden/default.html删除<title>标签,把一个<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> 
    ...