15

Sphinx(https://github.com/fridge-project/dbal-docs)を使用してドキュメントを実装しており、特定のドキュメントのhtmlページをオーバーライドしたいと思います。私の興味は、単純なulを表示するだけでなく、すべてのディレクトリインデックスを上書きすることです。

Sphinxのドキュメントを読みましたが、私の問題について何か面白いものが見つかりません...誰かが回避策を知っていますか?

4

2 に答える 2

14

記録として、この解決策は解決策というよりもハックですが、今のところ、より良いものは見つかりません...

まず、私の回避策がテーマに基づいていることを理解する必要があります。ドキュメントでは、テーマ (デフォルトまたはカスタム) を使用しますが、とにかくテーマを使用します。このテーマは、個別にオーバーライドできるさまざまな部分 (ページ、目次など) に分かれています。このオーバーライドは、さまざまなレベルで行うことができます: テーマ自体、またはプロジェクトのカスタム テンプレート ディレクトリ (既定_templatesでは ) ( で構成可能conf.py)。

私の回避策は、ドキュメント内のすべてのページを表すディレクトリ内のpage.htmlテンプレートをオーバーライドすることです。_templatesこのテンプレートでは、pagename(各ファイルの相対ドキュメント パス) にアクセスできます。それを知っていれば、このテンプレートで条件付きチェックを行い、これが上書きしたいファイルであるかどうかを検出してから上書きすることができます。オーバーライドする必要があるファイルでない場合は、デフォルトの動作に単純にフォールバックします。

{% extends "layout.html" %}
{% block body %}
    {% if pagename == 'index' %}
        {% include 'custom/index.html' %}
    {% else %}
        {{ body }}
    {% endif %}
{% endblock %}

説明するように、それは本当にハックのように聞こえます...

于 2013-05-03T23:02:56.763 に答える