diff --git a/_extensions/odoo/layout.html b/_extensions/odoo/layout.html
index 677c88b92..ffdb266c0 100644
--- a/_extensions/odoo/layout.html
+++ b/_extensions/odoo/layout.html
@@ -29,6 +29,7 @@
{% for code, url in language_codes %}
{%- endfor %}
+
{{ super() }}
{%- endblock -%}
diff --git a/conf.py b/conf.py
index e28410652..25f6163b6 100644
--- a/conf.py
+++ b/conf.py
@@ -338,7 +338,9 @@ def setup(app):
app.add_javascript('coa-valuation-continental.js')
app.add_javascript('coa-valuation-anglo-saxon.js')
+ app.connect('html-page-context', canonicalize)
app.add_config_value('canonical_root', None, 'env')
+ app.add_config_value('canonical_branch', 'master', 'env')
app.connect('html-page-context', analytics)
app.add_config_value('google_analytics_key', '', 'env')
@@ -409,6 +411,16 @@ def localize(app, pagename, templatename, context, doctree):
for la in app.config.languages.split(',')
]
+def canonicalize(app, pagename, templatename, context, doctree):
+ """ Adds a 'canonical' URL for the current document in the rendering
+ context. Requires the ``canonical_root`` setting being set. The canonical
+ branch is ``master`` but can be overridden using ``canonical_branch``.
+ """
+ if not app.config.canonical_root:
+ return
+
+ context['canonical'] = _build_url(
+ app.config.canonical_root, app.config.canonical_branch, pagename)
def _build_url(root, branch, pagename):
if not branch: