Jekyll: включить файл из каталога за пределы _includes

У меня есть каталог под названием /patterns на моем сайте Jekyll, структура которого обычно выглядит примерно так:

_includes _layouts _site /patterns index.html

Мне нужно сохранить каталог /patterns вне _includes по ряду причин, но в основном потому, что мне нужно вытащить файлы в /patterns в iframe для отображения в библиотеке шаблонов).

Я хотел бы включить файлы с /patterns в мои страницы Jekyll, но используя {% include /patterns/file.html %} doesn't work as it points to the _includes folder. How would I go about including a file from a directory that isn't _includes`?

Ответ 1

Вы можете изменить каталог, который тег include использует с includes_dir в вашем _config.yml. Не похоже, что вы можете установить несколько путей (источник: https://jekyllrb.com/docs/configuration/).

В любом случае, файлы в _includes не попадают в ваш вывод. Вы можете разделить включенные по шаблону включения в _includes/patterns/, но единственное, что может повлиять на ваш живой сайт, - это то, где эти файлы были включены.

Ответ 2

Я думаю, что collections будет делать то, что вам нужно. Они могут быть включены и представлены как общедоступные html.

Здесь примерный проект, который делает именно это.

Ответ 3

Вы можете включить фрагменты файла относительно текущего  файл с помощью тега include_relative для  /patterns/file.html

enter image description here

Для структуры каталогов у вас есть:

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

В этом случае не работает следующее:

{% include /patterns/file.html %}

Используйте include_relative, поскольку /pattern относится к index.html, как 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 %}

Ответ 5

Я помещаю символическую ссылку вместо каталога _includes, который указывает, где я хочу, поскольку includes_dir, похоже, не похож на ../, чтобы указать относительный (один или несколько путей выше).