{# Copyright (C) 2006-2021 Edgewall Software This software is licensed as described in the file COPYING, which you should have received as part of this distribution. The terms are also available at https://trac.edgewall.org/wiki/TracLicense. This software consists of voluntary contributions made by many individuals. For the exact contribution history, see the revision history and logs, available at https://trac.edgewall.org/. #} # extends (chrome.theme) # import "macros.html" as jmacros with context # block head # block title – ${project.name or 'Trac'} # endblock title # if chrome.content_type == 'text/html': # endif # for meta in chrome.metas: ## jinjacheck: "attribute content" OK # endfor # if chrome.links: # for rel, links in chrome.links.items(): # for link in links: # endfor # endfor # endif # if trac_error_rendering is undefined and 'SEARCH_VIEW' in perm: # endif # if chrome.script_data: # endif # for script in chrome.scripts: # endfor # include 'site_head.html' ignore missing # endblock head ## jinjacheck: "got (title meta meta meta link noscript link script script script )" OK # block content {# ------------------------------------------------------------------ Note: write the extending template like this: ## ------------------ # block content
(your content)
${ super() } # endblock content ## ------------------ The user content should typically go first, as evaluating the expressions it contains may modify the chrome.late_links, which are used afterwards in the default content. This default content should be output via the call to super(), placed after the user content. ------------------------------------------------------------------ #} # if chrome.late_links: # endif # if chrome.late_script_data: # endif # for script in chrome.late_scripts: # endfor # if 'alternate' in chrome.links: # endif # endblock content