Templating ========== The templates you make to use with Stoat are simply Django templates that take advantage of an extra variable. .. contents:: :local: The ``Page`` Variable --------------------- When Stoat renders a template it adds a ``page`` variable to the context. This variable has a few properties you'll want to use. ``page.title`` ~~~~~~~~~~~~~~ The title of the page as defined in the admin interface. ``page.get_absolute_url`` ~~~~~~~~~~~~~~~~~~~~~~~~~ A normal Django ``get_absolute_url`` method that will return the page's URL. ``page.fields`` ~~~~~~~~~~~~~~~ This property contains all of the fields you've defined in ``STOAT_TEMPLATES``, with their names lowercased and every non-letter/number replaced by an underscore. For example: look at the following ``STOAT_TEMPLATES`` setting:: STOAT_TEMPLATES = { 'Default': ['default.html', [ ['Heading', 'char'], ['Body', 'text'], ['Sidebar Heading', 'text'], ]], 'Product': ['pages/product.html', [ ['Price', 'int'], ['Description', 'text'], ['Image', 'img'], ['Image 2', 'img'], ]], } Here's what ``pages/product.html`` might look like:: {% extends "base.html" %} {% block content %}
Price: ${{ page.fields.price }}
{{ page.fields.description|linebreaks }} {% endblock %} You can use ``page.f`` as a shortcut for ``page.fields`` if you'd like to save on some typing. Navigation ---------- Stoat contains two sets of helpers for building navigation menus in your templates: template tags and ``Page`` methods. Every page has a ``show_in_nav`` option that determines whether they will be part of the lists returned by these helpers. Page Methods ~~~~~~~~~~~~ ``page.breadcrumbs`` ```````````````````` A list of the page's ancestors and itself. For example, imagine you have the following page layout:: About Us | +-> The Team | +-> Jimmy | +-> Timmy For the "Timmy" page ``page.breadcrumbs`` will be ``[