2016-05-17 12 views
6

मैं ऐसे मैनुअल बनाने के लिए जेकिल का उपयोग करना चाहता हूं जिसमें कई अध्याय हैं, जिनमें से प्रत्येक में कई अनुभाग हैं, और प्रत्येक अनुभाग को अलग मार्कडाउन फ़ाइल में स्टोर करें। मैं index.md चाहते कुछ इस तरह देखने के लिए:क्या मैं जेकिल में नेस्टेड संग्रह बना सकता हूं?

<ol> 
{% for chapter in site.chapters %} 
    <li> 
    <a href="{{chapter.url}}">{{chapter.title}}</a> 
    <ol> 
    {% for section in chapter.sections %} 
     <li><a href="{{section.url}}">{{section.title}}</a></li> 
    {% endfor %} 
    </ol> 
    </li> 
{% endfor %} 
<ol> 

प्रत्येक अध्याय _chapters में एक Markdown फ़ाइल है, और मैं _config.yml का अधिकार पंक्तियाँ जोड़ें, मैं अध्यायों से अधिक पुनरावृति कर सकते हैं, YAML से शीर्षक क्षेत्र बाहर खींच हेडर, इत्यादि। क्या यह घोंसला करने का कोई तरीका है? मैंने _chapters के तहत विभिन्न नामों के साथ उप-निर्देशिका बनाने की कोशिश की है, लेकिन (ए) जेकिल उन्हें उप-संग्रह के रूप में नहीं लेता है और (बी) अध्याय-स्तर की जानकारी को संग्रहीत करने के लिए कोई स्पष्ट स्थान नहीं है (जैसे अध्याय के समग्र शीर्षक) ।

(नोट: मुझे लगता है कि मैं स्पष्ट रूप से _config.yml में YAML के एक ब्लॉक में अध्याय और वर्गों गणना करके ऐसा कर सकते हैं, या _data में एक अलग YAML फ़ाइल बनाने के द्वारा, लेकिन मुझे लगता है कि रखने के बारे में चिंता करने की ज़रूरत नहीं करना चाहते वास्तविक अध्यायों और खंडों के साथ समन्वय में गणना: मैं जैकिल को स्वचालित रूप से परिवर्तनों को चुनना चाहता हूं।)

उत्तर

8

तो सबसे अच्छा तरीका मुझे पता है कि यह कैसे करना है अपनी सोच को उलटा करना है।

आप अध्यायों नहीं लिख रहे हैं, आप वर्गों लिख रहे हैं और अध्यायों में उन्हें आयोजन।

मान लें तो आप इस तरह एक सेटअप:

  • _sections
    • section01.md
    • section02.md
    • section03.md
    • section04.md

लेकिन आप इसे उत्पादन इस तरह हैं:

  • _site
    • अध्यायों
      • chapter1.html (शामिल section01.mdsection03.md के बाद)
      • chapter2.html (section02.md के बाद होता है section04.md)

यदि ऐसा है, तो आप संग्रह का उपयोग करके ऐसा कर सकते हैं। 01 को section01.md और section03.md की frontmatter और 02 को section02.md और section04.md की frontmatter में chapter संपत्ति में chapter संपत्ति सेट करें।

समस्या अध्यायों के लिए पृष्ठों को उत्पन्न कर रही है।आप को प्रत्येक अध्याय के लिए एक पृष्ठ बनाने की आवश्यकता है, लेकिन यदि आप लेआउट का उपयोग करते हैं तो यह बुरा नहीं है।

यहाँ लेआउट मैं इस्तेमाल किया (_layouts/chapter.html में) है:

--- 
chapter: 01 
layout: chapter 
--- 

बस ऐसे ही chapter02.md को कॉपी और chapter सेट:

--- 
layout: default 
--- 

<h1>Chapter {{ page.chapter }}</h1> 

{% for section in site.sections %} 
{% if section.chapter == page.chapter %} 
{{ section.output }} 
{% endif %} 
{% endfor %} 
फिर _chapters में

, मैं जो इस तरह दिखता है chapter01.md है, संपत्ति 02, और अब आपके पास अध्याय 2.

यह काम करने के लिए आवश्यक केवल दूसरी बात अपने config अपडेट कर रहा है:

collections: 
     sections: 
       output: false 
     chapters: 
       output: true 

जब आप jekyll build चलाने के लिए, आप अब _site/chapters/chapter01.html और _site/chapters/chapter02.html होगा। जैसे-जैसे नए वर्ग बनाए जाते हैं, उन्हें उनके फ्रंटमेटर में जो भी अध्याय दिया जाता है, उन्हें जोड़ा जाएगा।

यह सब वास्तव में भ्रमित है, इसलिए मैंने http://paddyforan.github.io/jekyll-nested-collections-example/ पर https://github.com/paddyforan/jekyll-nested-collections-example पर स्रोत कोड के साथ एक नमूना स्थापित किया।

+0

धन्यवाद धान - यह बहुत ही भयानक है, लेकिन यह काम करेगा। –

+0

मेरी खुशी! माफ़ कीजिए इतना समय लग गया। इसे जेक्युल प्लगइन का उपयोग करके मामूली रूप से बेहतर (अध्याय फाइलों को स्वतः बनाना) बनाया जा सकता है, लेकिन यह गिथब पेज पर काम नहीं करेगा। – Paddy

+0

मैं शायद बेवकूफ हूं, लेकिन मुझे स्रोत कोड में "यह धारा 01 का एक लिंक" स्ट्रिंग नहीं मिल रहा है। मैं क्या खो रहा हूँ? – mau

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