我正在尝试从.rst
文件中提取要包含在HTML模板中的元信息。
我假设如果我放了像
.. :newVariable: My Text
进入.rst文件然后使用我自己的模板构建HTML,我将能够在HTML标头中包含newVariable
。但它不起作用。我尝试了几件事无济于事。
这是否可以在不修改Sphinx源的情况下解决?
答案 0 :(得分:4)
在.rst文件中,在顶部放置一个字段列表,其中包含您要传递的变量名称和值。
meta
信息不是必需的,但会显示,以便您可以查看代码的放置位置。
.. meta::
:author: My Company, Inc.
:description: Introduction to ...
:copyright: Copyright © 2014 My Company, Inc.
:my-variable: my variable's value
.. _introduction:
==================================================
Introduction to ....
==================================================
在您的模板中,您现在可以使用以下代码访问my-variable
:
{%- set my-variable = '' %}
{%- set my-variable_key = 'my-variable' %}
{%- if meta is defined %}
{%- if my-variable_key in meta.viewkeys() %}
{%- set my-variable = meta.get(my-variable_key) %}
{%- endif %}
{%- endif %}
您现在可以使用my-variable
及其值。
请注意,在模板中,meta
指的是第二个字段列表; metatags
是指由.. meta::
构建的标头元标记的docutils生成的HTML。它们是两个不同的对象,具有相同的名称......
答案 1 :(得分:2)
我不确定这确切地回答了您的问题,但是您可以在sphinx配置文件(conf.py)中放置一个名为html_context
的字典,该字典允许您定义自定义变量然后在你的html模板中渲染。您可以在此处查看文档:{{3}}
在我的应用程序中,我有一个软件发布日期列表,我希望在index.html doc splash页面中呈现。我这样设置:
在releases.py中:
RELEASES = [
( "Jun 05, 2014", "095", "" ),
( "May 28, 2014", "094", "" ),
( "Apr 29, 2014", "093", "" ),
...
]
在conf.py中:
# Get list of releases for index page rendering
import releases
html_context = {
'releases' : releases.RELEASES,
}
在index.html中:
{%- for release in releases %}
<p><span class="style4"><em><strong>{{ release[0] }} ... {{ release[1] }} was released ... </p>
{%- endfor %}