The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Dotiac::DTL::Tag::extends - The {% extends FILE %} tag

SYNOPSIS

Template file:

        {% extends "main.html" %}
        {% block title %}About us{% endblock %}
        {% block pagecontent %}<h1>About us</h1>Under construction{% endblock %}

Other template file:

        {% extends variable %}
        This text will never be printed, ever.
        {% block pagecontent %}<h1>Main Page</h1>Under construction{% endblock %}

DESCRIPTION

Loads another template and replaces its content with this.

The content will be ignored, unless {% block %} tags, which are evaluated. Those will replace the corresponding {% block %} tags in the included template. See Dotiac::DTL::Tag::block for details

The FILE parameter can be either a string: "file.html" or a variable. If it is a string, the template will be loaded and parsed during the parse time of the template, which is faster. A variable can be either a filename or a Dotiac::DTL object.

BUGS AND DIFFERENCES TO DJANGO

Django's {% extend %} works for the whole files and ends at the file end. In this Dotiac::DTL, this is also valid and works as you would expect:

Template file:

        <html><body>
        {% extends "sidebar.html" %}
                {% block sidebartext1 %}Great news{% endblock %}
                {% block sidebartext2 %}Dotiac::DTL finished{% endblock %}
        {% endextends %}
        <div id="page"> 
        Page content
        </div>
        {% extends "footer.html" %}
                {% block foottext %}Author: me{% endblock foo %}
        {% endextends %} 
        </body></html>

Most tags update blocks even if they shouldn't, this is why this won't work as you expect.

Django doesn't allow this anyway. This will always set the "content"-block to "No Text" no matter what var is.

        {% extends "foo.html" %}
        {% if var %}
                {% block content %}
                        Text
                {% endblock content %}
        {% else %}
                {% block content %}
                        No Text
                {% endblock content %}
        {% endif %}

SEE ALSO

http://www.djangoproject.com, Dotiac::DTL

LEGAL

Dotiac::DTL was built according to http://docs.djangoproject.com/en/dev/ref/templates/builtins/.

AUTHOR

Marc-Sebastian Lucksch

perl@marc-s.de