sphinx-multiversion/docs/templates.rst

147 lines
3.9 KiB
ReStructuredText

.. _templates:
=========
Templates
=========
``sphinx-multiversion`` does not change the look of your HTML output by default.
Instead, you can customize the template to cater to your needs.
Version Listings
================
To add version listings to your template, you need to add a custom template to your theme.
You can take one of the snippets below, put it into :file:`_templates/versioning.html` and add it to your theme's sidebar:
.. code-block:: html
templates_path = [
"_templates",
]
html_sidebars = [
"versioning.html",
]
List all branches/tags
----------------------
.. code-block:: html
{% if versions %}
<h3>{{ _('Versions') }}</h3>
<ul>
{%- for item in versions %}
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
{%- endfor %}
</ul>
{% endif %}
List branches and tags separately
---------------------------------
.. code-block:: html
{% if versions %}
<h3>{{ _('Branches') }}</h3>
<ul>
{%- for item in versions.branches %}
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
{%- endfor %}
</ul>
<h3>{{ _('Tags') }}</h3>
<ul>
{%- for item in versions.tags %}
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
{%- endfor %}
</ul>
{% endif %}
List releases and development versions separately
-------------------------------------------------
.. code-block:: html
{% if versions %}
<h3>{{ _('Releases') }}</h3>
<ul>
{%- for item in versions.releases %}
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
{%- endfor %}
</ul>
<h3>{{ _('In Development') }}</h3>
<ul>
{%- for item in versions.in_development %}
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
{%- endfor %}
</ul>
{% endif %}
Version Banners
===============
You can also add version banners to your theme, for example:
.. code-block:: html
{% extends "page.html" %}
{% block body %}
{% if current_version and latest_version and current_version != latest_version %}
<p>
<strong>
{% if current_version.is_released %}
You're reading an old version of this documentation.
If you want up-to-date information, please have a look at <a href="{{ vpathto(latest_version.name) }}">{{latest_version.name}}</a>.
{% else %}
You're reading the documentation for a development version.
For the latest released version, please have a look at <a href="{{ vpathto(latest_version.name) }}">{{latest_version.name}}</a>.
{% endif %}
<strong>
</p>
{% endif %}
{{ super() }}
{% endblock %}%
ReadTheDocs Theme
=================
As of version 0.4.3, the `Read the Docs theme <sphinx_rtd_theme_>`_ does not support sidebar widgets.
So instead of adding a custom template to ``html_sidebars``, you need to create a template file named :file:`versions.html` with the following content:
.. code-block:: html
{%- if current_version %}
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Other Versions</span>
v: {{ current_version.name }}
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
{%- if versions.tags %}
<dl>
<dt>Tags</dt>
{%- for item in versions.tags %}
<dd><a href="{{ item.url }}">{{ item.name }}</a></dd>
{%- endfor %}
</dl>
{%- endif %}
{%- if versions.branches %}
<dl>
<dt>Branches</dt>
{%- for item in versions.branches %}
<dd><a href="{{ item.url }}">{{ item.name }}</a></dd>
{%- endfor %}
</dl>
{%- endif %}
</div>
</div>
{%- endif %}
.. _sphinx_rtd_theme: https://pypi.org/project/sphinx-rtd-theme/