Giovanni Di Milia
Giovanni Di Milia

Reputation: 14041

webpy: how to override content of basic template?

I'm using webpy with a basic template

render = web.template.render(basedir + 'templates/', base='layout', globals=globals_vars_custom)

in layout.html I have something like:

$def with (content)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
    <head>
        <title>PAGE TITLE</title>
        <!-- Some CSS and some javascript -->
    </head>
    <body>
        $:content
    </body>
</html>

This basic template works fine for the 90% of my site, but I have a page in which I need to insert some other data inside the <head> (some meta tags).

How can I do this? How can I put the <head> inside a structure that I can easily override inside a template?

Thanks!

Upvotes: 2

Views: 1374

Answers (1)

Giovanni Di Milia
Giovanni Di Milia

Reputation: 14041

It was easier than I tought:

You can create a variable in a template:

in page.html you can define a variable

$var title = 'specific title'

in the base template layout.html you can call the varable:

$def with (content)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
    <head>
        <title>$content.get("title","DEFAULT TITLE")</title>
        <!-- Some CSS and some javascript -->
    </head>
    <body>
        $:content
    </body>
</html>

I hope this answer can be useful also for other people.

Upvotes: 5

Related Questions