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 %}
Ответ 4
В вашем _config.yml вы можете добавить дополнительные каталоги, например:
includes:
- patterns
Так же просто!
В действии на моем сайте Jekyll: https://github.com/pschfr/pschfr.github.io/blob/master/_config.yml
Ответ 5
Я помещаю символическую ссылку вместо каталога _includes
, который указывает, где я хочу, поскольку includes_dir
, похоже, не похож на ../
, чтобы указать относительный (один или несколько путей выше).