[IMP] config: add canonical url

Inspired by odoo/odoo@958f9106dd (which was lost by the way)
This commit is contained in:
Martin Trigaux 2019-12-10 18:30:46 +01:00
parent 05f3db3d35
commit d03b078ad6
2 changed files with 13 additions and 0 deletions

View File

@ -29,6 +29,7 @@
{% for code, url in language_codes %}
<link rel="alternate" hreflang="{{ code }}" href="{{ url }}" />
{%- endfor %}
<link rel="canonical" href="{{ canonical }}" />
{{ super() }}
{%- endblock -%}

12
conf.py
View File

@ -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: