我正在使用斯芬克斯實現文檔(https://github.com/fridge-project/dbal-docs)&想要覆蓋特定文檔的html頁面。我的興趣是覆蓋所有目錄索引,不僅顯示一個簡單的ul。替代特定斯芬克斯文檔的html頁面模板
我已閱讀獅身人面像文件,但我沒有發現有關我的問題有趣...有人知道一個解決方法嗎?
我正在使用斯芬克斯實現文檔(https://github.com/fridge-project/dbal-docs)&想要覆蓋特定文檔的html頁面。我的興趣是覆蓋所有目錄索引,不僅顯示一個簡單的ul。替代特定斯芬克斯文檔的html頁面模板
我已閱讀獅身人面像文件,但我沒有發現有關我的問題有趣...有人知道一個解決方法嗎?
根據記錄,該解決方案是遠遠超過溶液中的技巧,但現在,我沒有找到更好的......
首先,所有你需要了解我的解決方法是基於主題化。在你的文檔中,你使用了一個主題(默認的或自定義的主題),但無論如何,你都使用主題。這個主題分爲不同的部分(頁面,toc,...),可以單獨覆蓋。此覆蓋可以在不同級別完成:主題本身或項目的自定義模板目錄(默認爲_templates
)(可在conf.py
中配置)。
我的解決方法是覆蓋_templates
目錄中的page.html
模板,該目錄代表文檔中的所有頁面。在此模板中,您可以訪問pagename
(每個文件的相對文檔路徑)。知道這一點,你可以在這個模板中進行一些有條件的檢查,以檢測這是否是一個你想覆蓋的文件,然後覆蓋它。如果它不是需要重寫文件,只需回退到上的默認行爲:
{% extends "layout.html" %}
{% block body %}
{% if pagename == 'index' %}
{% include 'custom/index.html' %}
{% else %}
{{ body }}
{% endif %}
{% endblock %}
作爲解釋,聽起來真是一個黑客...
每個人都應該能夠使用一個變量定義要擴展的模板。 http://jinja.pocoo.org/docs/2.10/templates/#template-objects
以這種方式,它可能不是'黑客'。並且您可以完全控制生成的輸出(不僅是body
塊)。
的layout.html:
{% extends meta.page_template|default('basic/page.html') %}
而在你index.rst你用那麼頁面級的元數據: http://www.sphinx-doc.org/en/stable/markup/misc.html#file-wide-metadata
index.rst:
:page_template: custom/index.html <your normal index.rst content>
你有沒有最終找到解決方案? –
是的,我找到了一個解決方案,但它真的聽起來像一個黑客... 我已經覆蓋'page.html'模板&根據'pagename'然後'include'自定義模板而不是真正的... – egeloen
你能在這裏粘貼解決方案嗎?即使它只是一個黑客,也會有所幫助。 –