使用javascript而不是Sphinx';s默认目录树

使用javascript而不是Sphinx';s默认目录树,javascript,python-sphinx,restructuredtext,tableofcontents,toctree,Javascript,Python Sphinx,Restructuredtext,Tableofcontents,Toctree,我正在使用sphinx自动生成html页面。目录非常长,因此我尝试向目录树的div添加一个新的html类(除其他外),以便使用javascript库。基本上是想改变目录树生成HTML的方式 我找到了globaltoc.html文件,将其放入\u templates文件夹中,并在conf.py中取消对模板路径的注释 这是\u templates目录中的文件 {% extends '!globaltoc.html' %} <div class="toctree-wrapper compoun

我正在使用sphinx自动生成html页面。目录非常长,因此我尝试向目录树的div添加一个新的html类(除其他外),以便使用javascript库。基本上是想改变目录树生成HTML的方式

我找到了globaltoc.html文件,将其放入\u templates文件夹中,并在conf.py中取消对模板路径的注释

这是\u templates目录中的文件

{% extends '!globaltoc.html' %}

<div class="toctree-wrapper compound dhtmlxTree" id="toc", setImagePath="_static/imgs/csh_dhx_skyblue/">

{{ toctree() }}
</div>
{%extends'!globaltoc.html%}
{{toctree()}}
如果我做错了,请告诉我另一种方法。我希望能在纯粹的休息中做到这一点,但这似乎是不可能的。我已经看过了斯芬克斯模板的有限例子,这就是我能找到的全部

它的总体目标是用于非常大的树。我已经将所需的.js文件和.css文件添加到layout.html。我只需要包含目录树的div来拥有我需要的类。我可以通过手动编辑得到所需的结果,现在我需要将其自动化


谢谢您的帮助。

我相信有两种可能的解决方案可以解决我的问题:

  • 使用Jinja模板编写javascript和项目符号列表。目前,我不熟悉使用递归Jinja标志。因此,这个解决方案虽然可能,但可能比第二个解决方案更让我沮丧

  • 只需减少目录树指令的:maxdepth:属性。设置为4。减少此数字会使目录更小,因此更易于阅读

  • 在考虑到需要查看所有层之后,我意识到这很愚蠢,并且降低了目录的实用性。所以我把:maxdepth:减少到了2,一切都回到了reST和Sphinx提供的简单性

    更好的设计每次都胜过酷的因素。

    我也更喜欢解决方案2(减少:maxdepth:)。如果你想走这条路,你的解决方案1是正确的。