jahilldev
jahilldev

Reputation: 3812

Scala Lift - Dynamic page chrome

I have a page which is passed an id from which the content is determined. What I'm looking to do is dynamically replace the pages "chrome" depending on the content.

So if I have a db record "Book", I'd like to display the Book chrome in templates-hidden.

Thanks for any help, much appreciated :)

Upvotes: 1

Views: 178

Answers (1)

Silas
Silas

Reputation: 1150

You can define a snippet that selects the template you want and pass the xhtml NodeSeq containing the template selection to it:

<lift:TemplateSnippet.dynamicTemplatePicking>
    <lift:surround dynamic:template="" at="content">
        <h2>some heading</h2>
        <p>some text</p>
    </lift:surround>
</lift:TemplateSnippet.dynamicTemplatePicking>

And the snippet code:

class TemplateSnippet {  
    def dynamicTemplatePicking(xhtml :NodeSeq) :NodeSeq = {
        bind("dynamic", xhtml, AttrBindParam("template", Text("default"), "with"))
    }
}

By changing the "default" in Text("default") inside the snippet you can choose another template depending on your needs. Maybee you want to do something like def choose (record: Record) = record match { case b: Book => "booktemplate"} and so on...

Source: Mads Hartmann's posting

Upvotes: 1

Related Questions