如何在sphinx-doc中加载外部JavaScript

时间:2016-05-08 04:04:46

标签: jinja2 python-sphinx

我正在basic扩展sphinx-doc主题,我注意到基本主题layout.html script宏中的以下代码块

{%- for scriptfile in script_files %}
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
{%- endfor %}

这是否意味着我可以在html_theme_options内添加theme.conf,如下所示:

[options]
script_files = 

在我的conf.py内,我添加:

html_theme_options = {'script_files': '_static'}

然而,使用这个集合,构建完全混乱并产生垃圾页面,如:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>...</head>
  <body>
     -->
   <!-- my js code but is automatically commented out-->
  </body>
</html>

哪个部分出了问题?我应该怎么做才能加载我自己的自定义JavaScript?非常感谢!

1 个答案:

答案 0 :(得分:5)

script_files是模板内部变量。您无法通过html_theme_options设置它(所有主题变量都有theme_作为前缀,请参阅下文。)

Sphinx文档解释here如何通过script_files变量直接在模板文件中添加其他脚本。

如果您认为在conf.py中定义其他脚本很重要,请按以下步骤操作:

  1. 将以下行添加到模板的layout.html,例如endblock定义的DOCTYPE下方:

    {% set script_files = script_files + theme_extra_scripts %}

  2. extra_scripts中定义主题变量theme.conf及其默认值:

    extra_scripts = []

  3. 覆盖conf.py中的变量:

    html_theme_options = {
       'extra_scripts': ['_static/test.js']
    }