2012-11-03 14 views
8

के लिए एचटीएमएल पेज टेम्पलेट को ओवरराइड करें मैं स्फिंक्स (https://github.com/fridge-project/dbal-docs) & का उपयोग करके एक प्रलेखन को कार्यान्वित कर रहा हूं, किसी विशिष्ट दस्तावेज़ के HTML पृष्ठ को ओवरराइड करना चाहता हूं। मेरी रुचि केवल एक साधारण उल दिखाने के लिए सभी निर्देशिका अनुक्रमणिका को ओवरराइड करना है।एक विशिष्ट स्फिंक्स दस्तावेज़

मैंने स्फिंक्स दस्तावेज पढ़ा है लेकिन मुझे अपने मुद्दे के बारे में कुछ दिलचस्प नहीं लगता ... क्या कोई कामकाज जानता है?

+0

आप क्या
{% extends meta.page_template|default('basic/page.html') %}

और अपने index.rst में आप तो पृष्ठ-स्तरीय-मेटा डेटा का उपयोग अंत में एक समाधान मिल गया? –

+0

हां, मुझे एक समाधान मिला है लेकिन यह वास्तव में एक हैक की तरह लगता है ... मैंने 'पृष्ठ.html 'टेम्पलेट को ओवरराइड कर दिया है और' pagename' के अनुसार कुछ सशर्त जांच करें और फिर 'कस्टम टेम्पलेट' वास्तविक एक ... – egeloen

+0

क्या आप यहां समाधान पेस्ट कर सकते हैं? उपयोगी होगा भले ही यह सिर्फ एक हैक है। –

उत्तर

10

रिकॉर्ड के लिए, इस समाधान भी बहुत कुछ एक समाधान की तुलना में एक हैक

सबसे पहले, तुम सब मेरे वैकल्पिक हल को समझने की जरूरत के आधार पर किया जाता है, लेकिन अब के लिए, मैं कुछ बेहतर नहीं मिलता ... थीम। अपने डॉक्टर में, आप थीम (डिफ़ॉल्ट एक या एक कस्टम) का उपयोग करते हैं लेकिन फिर भी, आप थीम का उपयोग करते हैं। यह विषय अलग-अलग भाग (पृष्ठ, टोक, ...) में विभाजित है जिसे व्यक्तिगत रूप से ओवरराइड किया जा सकता है। यह ओवरराइड अलग-अलग स्तर पर किया जा सकता है: थीम स्वयं या प्रोजेक्ट की कस्टम टेम्पलेट निर्देशिका में (डिफ़ॉल्ट रूप से _templates) (conf.py में कॉन्फ़िगर करने योग्य)।

मेरा कामकाज page.html टेम्पलेट को _templates डीआईआर में ओवरराइड करना है जो आपके दस्तावेज़ में सभी पृष्ठों का प्रतिनिधित्व करता है। इस टेम्पलेट में, आपके पास pagename (प्रत्येक फ़ाइल का सापेक्ष दस्तावेज़ पथ) तक पहुंच है। यह जानकर, आप इस टेम्पलेट में कुछ सशर्त जांच कर सकते हैं यह पता लगाने के लिए कि क्या यह एक फ़ाइल है जिसे आप & ओवरराइड करना चाहते हैं, फिर इसे ओवरराइड करें। यदि यह एक फ़ाइल जो अधिरोहित जा करने की जरूरत नहीं है, बस डिफ़ॉल्ट व्यवहार पर वापस आने:

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

के रूप में समझाते हैं, यह वास्तव में एक हैक की तरह लगता है ...

0

एक एक चर का उपयोग करने में सक्षम होना चाहिए से विस्तार करने के लिए टेम्पलेट को परिभाषित करने के लिए। http://jinja.pocoo.org/docs/2.10/templates/#template-objects

इस तरह से यह 'हैक' से कम हो सकता है। और आपके पास जेनरेट आउटपुट के बारे में पूर्ण नियंत्रण है (न केवल body ब्लॉक)।

layout.html: 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>

संबंधित मुद्दे