web-dev-qa-db-ja.com

Jekyll:_includesの外部のディレクトリからファイルをインクルードします

私のJekyllサイトに/patternsというディレクトリがあります。その構造は一般に次のようになります。

_includes _layouts _site /patterns index.html

いくつかの理由で/patternsディレクトリを_includesの外に保持する必要がありますが、主な理由は、/patterns内のファイルをiframeにプルしてパターンライブラリに表示する必要があるためです)。

Jekyllページに/patternsのファイルを含めたいのですが、{% include /patterns/file.html %} doesn't work as it points to the_ includesfolder. How would I go about including a file from a directory that isn't_ includes`を使用しますか?

18
Brad Frost

includeタグが使用するディレクトリをincludes_dir_config.ymlで変更できます。複数のパスを設定できるようには見えません(ソース: https://jekyllrb.com/docs/configuration/ )。

いずれの場合でも、_includesのファイルは出力に含まれません。パターン固有のインクルードを_includes/patterns/に分けることもできますが、ライブサイトに影響を与えるのは、それらのファイルがインクルードされた場所だけです。

7
Ross

collections は必要なことを行うと思います。それらは、パブリックhtmlとして含めてレンダリングできます。

これが サンプルプロジェクト これだけです。

3
Ben Ubois

include_relative/patterns/file.htmlタグを使用して、 現在のファイルに関連するファイルフラグメントを含める を選択できます。

enter image description here

あなたが持っているディレクトリ構造のために:

_includes
_layouts
_site
/patterns/file.html
index.html

この場合、以下は機能しません。

{% include /patterns/file.html %}

include_relative as /patternis relatifto index.html as current file

{% include_relative patterns/file.html %}

レイアウトフォルダ内のファイルでinclude_relativeタグを使用することはできません。 include_relativeは、ページまたは投稿でのみ使用できます。レイアウトコードはページ/ポストレンダリングのコンテキストで実行され、include_relativeはこのページまたはポストを基準にして計算されます レイアウト自体からではありません

この場合、index.htmlのコードは次のようになります。

---
layout: null
---
(put all code from _layouts/default.html)
{% include_relative patterns/file.html %}
3
Chetabahana

_config.ymlで、次のようにディレクトリを追加できます。

includes:
- patterns

それと同じくらい簡単です!

私のJekyllサイトのここでの動作: https://github.com/pschfr/pschfr.github.io/blob/master/_config.yml

1
Paul

_includesは相対(1つ以上のディレクトリの上位)パスを指定するためにincludes_dirを好まないようであるため、必要な場所を指す../ディレクトリの代わりにシンボリックリンクを配置しました。

1
KFunk

これについて私が見つけた唯一の解決策は、このプラグインを使用することです

https://github.com/tnhu/jekyll-include-absolute-plugin

0
Jeremy Lynch