2016-05-17 14 views
6

私はJekyllを使っていくつかの章を含むマニュアルを作成したいと思います。各章にはいくつかのセクションがあり、各セクションを別々のMarkdownファイルに保存します。 YAMLからタイトルフィールドを引き出し、各章では、_chaptersでマークダウンファイルである、と私は_config.ymlに右の行を追加する場合、私は章を反復処理することができますジキルでネストされたコレクションを作成できますか?

<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> 

:私はindex.mdはこのような何かを見てみたいですヘッダーなどを入れ子にする方法はありますか? _chaptersの下にサブディレクトリを作成しようとしましたが、(a)Jekyllはサブコレクションとしてそれらを選択しません。(b)チャプターレベルの情報を保存する明白な場所はありません(チャプターの全体タイトルなど) 。

(注:YAMLブロック内の章とセクションを明示的に列挙して_config.ymlに入れるか、別のYAMLファイルを_dataに作成することでこれを行うことができると思いますが、そのことを心配する必要はありません実際の章とセクションに同期して列挙します:私はジキルが自動的に変更を受け取りたいと思います。)

答えて

8

これを行う方法を知っている最良の方法は、あなたの思考を逆転させることです。

あなたはセクションを書き、それらをに章を整理している、を書いていません。

  • _sections
    • section01.md
    • section02.md
    • section03.md
    • section04.md
  • は、あなたがこのようなセットアップを持っていると仮定します

しかし、あなたは、このような出力をしたい:

  • _site
      • chapter1.html(section03.md続いsection01.mdが含まれています)
      • chapter2.htmlは、(続くsection02.mdが含まれていますsection04.md

この場合、コレクションを使用することができます。フロントマターのchapterプロパティは、section03.md01chapterプロパティはsection02.mdsection04.mdから02に設定します。

問題は、章のページを生成しています。あなたはです。は各章ごとにページを作成する必要がありますが、レイアウトを使用すると悪くはありません。

ここで(_layouts/chapter.htmlで)私が使用したレイアウトです:

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

はちょうどそのchapter02.mdにコピーしchapterを設定します。_chaptersで次に

--- 
layout: default 
--- 

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

{% for section in site.sections %} 
{% if section.chapter == page.chapter %} 
{{ section.output }} 
{% endif %} 
{% endfor %} 

が、私はこのようになりますこれは、chapter01.mdを持っていますプロパティを02に変更すると、第2章が作成されます。

この作品は、あなたの設定を更新しているために必要な唯一の他の事:

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

Thanks Paddy - これは恐ろしいことですが、うまくいくでしょう。 –

+0

私の喜び!ごめんなさい。 jekyllプラグインを使って少し上手く(チャプタファイルを自動作成する)ことができますが、Github Pagesでは動作しません。 – Paddy

+0

私はおそらく愚かですが、ソースコード内に「これはセクション01へのリンクです」という文字列が見つかりません。私は何が欠けていますか? – mau

関連する問題