0

次のようなテンプレートがあります。

<lift:surround name="default" at="page-content">
  <lift:bind-at name="page-title">Home</lift:bind-at>
  ...
</lift:surround>

デフォルトのテンプレートは次のようになります。

<html>
 <head>
  <title>Title Prefix | </title>
 </head>
 <body>
    <h1><lift:bind name="page-title" /></h1>
    <div id="page-content">
      <lift:bind name="page-content" />
    </div>
 </body>
</html>

スニペットを使用して、コンテンツを「タイトルプレフィックス」との値(つまり「ホーム」)<title>を組み合わせた文字列に置き換えたいと思います。内で<lift:bind-at name="page-title">同じ値を使用し続けたい<h1><body>

bind-at周囲のテンプレートで使用されているスニペット内から値にアクセスするにはどうすればよいですか?

4

1 に答える 1

1

私はあなたがbind-atディレクティブであなたがしようとしていることをすることができるとは思わない、あるいは少なくとも、私は方法を見つけられなかった。ただし、スニペットを使用して同様のことを実行できるはずです。

たとえば、を使用している場合SiteMap、次のことはほぼ同等です。

class TitleSnippet {
  //Store the value in a requestVar
  private var titleVar:String = ""

  def first = {
    //Retrieve the title for the current Loc as defined in the Sitemap
    val locTitle = for (request <- S.request;
      loc <- request.location) yield loc.title

    //Retrieve the text portion of the tag, and append it to the sitemap title. 
    //If no sitemap title exists, just display the text
    "* *" #> { ns => 
      val myTitle = locTitle.map{ t => 
        "%s | %s".format(ns.text, t) 
      } openOr ns.text 
      titleVar = myTitle
      Text(myTitle)
    }
  }

  def title = {
    "* *" #> titleVar
  }
}

次に、テンプレートで、次のように言うだけです。

<title data-lift="TitleSnippet.first">Home</title>

したがって、サイトマップに次のように定義されたページがある場合:

Menu("Sub Page 1") / "subpage"

すべてが機能した場合は、次のようなタイトルが<title>Home | Sub Page 1</title>表示されます。ページの他の場所で必要な場合は、次のようにする必要があります<h1 data-lift="TitleSnippet.title"></h1>

他のスニペットからアクセスする必要がある場合はtitleVar、コンパニオンオブジェクトに分割して、を使用することもできますRequestVar

于 2013-03-18T17:01:22.720 に答える