HTML-Seitenvorlage für ein bestimmtes Sphinx-Dokument überschreiben

8

Ich implementiere eine Dokumentation mit Sphinx ( Ссылка ) & amp; möchte die HTML-Seite eines bestimmten Dokuments überschreiben. Mein Interesse ist es, alle Verzeichnisindizes zu überschreiben, um nicht nur eine einfache ul.

anzuzeigen

Ich habe die Sphinx-Dokumentation gelesen, aber ich finde nichts Interessantes zu meinem Problem ... Kennt jemand einen Workaround?

    
egeloen 03.11.2012, 13:23
quelle

2 Antworten

10

Für die Aufzeichnung ist diese Lösung viel mehr ein Hack als eine Lösung, aber für jetzt finde ich nichts besseres ...

Zuerst müssen Sie verstehen, dass meine Problemumgehung auf dem Theming basiert. In Ihrem Dokument verwenden Sie ein Design (das Standarddesign oder ein benutzerdefiniertes Design). Sie verwenden jedoch ein Design. Dieses Thema ist in verschiedene Teile (Seiten, Token, ...) unterteilt, die einzeln überschrieben werden können. Diese Überschreibung kann auf verschiedenen Ebenen erfolgen: das Thema selbst oder im benutzerdefinierten Vorlagenverzeichnis des Projekts (standardmäßig _templates ) (konfigurierbar in conf.py ).

Meine Problemumgehung besteht darin, die Vorlage page.html im Verzeichnis _templates zu überschreiben, die alle Seiten in Ihrer Dokumentation darstellt. In dieser Vorlage haben Sie Zugriff auf pagename (relativer Dokumentpfad jeder Datei). Wenn Sie dies wissen, können Sie in dieser Vorlage eine bedingte Überprüfung durchführen, um festzustellen, ob es sich um eine Datei handelt, die Sie überschreiben möchten. dann überschreibe es. Wenn es sich nicht um eine Datei handelt, die überschrieben werden muss, greifen Sie einfach auf das Standardverhalten zurück:

%Vor%

Wie zu erklären, klingt es wirklich wie ein Hack ...

    
egeloen 03.05.2013, 23:02
quelle
0

Man sollte in der Lage sein, eine Variable zu verwenden, um die Vorlage zu definieren, von der aus erweitert werden soll. Ссылка

Auf diese Weise könnte es weniger ein "Hack" sein. Und Sie haben die volle Kontrolle über die generierte Ausgabe (nicht nur den body -Block).

layout.html:
{% extends meta.page_template|default('basic/page.html') %}

Und in Ihrem Index.rst verwenden Sie dann Meta-Daten auf Seitenebene: Ссылка

index.rst:
:page_template: custom/index.html <your normal index.rst content>

    
karelv 15.01.2018 08:36
quelle

Tags und Links