Включения
Тег include позволяет включать содержимое из другого файла, хранящегося в папке _includes.
{% include footer.html %}
Jekyll будет искать указанный файл (в данном случае, footer.html) в директории _includes в корне вашей исходной директории и вставить его содержимое.
Включение файлов относительно другого файла
Вы можете выбрать включение фрагментов файлов относительно текущего файла, используя тег include_relative.
{% include_relative somedir/footer.html %}
Вам не нужно размещать включенное содержимое внутри папки _includes. Вместо этого включение происходит относительно файла, где используется этот тег. Например, если _posts/2014-09-03-my-file.markdown использует тег include_relative, то включенный файл должен находиться внутри папки _posts или одной из её подпапок.
Обратите внимание, что вы не можете использовать синтаксис ../ для указания расположения включения, которое ссылается на директорию выше по иерархии.
Все остальные возможности тега include доступны и для тега include_relative, такие как переменные.
Использование имён переменных для имени файла включения
Имя файла, который вы хотите вставить, можно указать как переменную вместо фактического имени файла. Например, предположим, что вы определили переменную в метаданных страницы, как показано ниже:
--- title: My page my_variable: footer_company_a.html ---
Вы можете затем сослаться на эту переменную в вашем включении:
{% if page.my_variable %}
{% include {{ page.my_variable }} %}
{% endif %}
В этом примере включение вставит файл footer_company_a.html из директории _includes/footer_company_a.html.
Передача параметров включениям
Вы также можете передавать параметры включению. Например, предположим, что у вас есть файл под названием note.html в папке _includes, содержащий следующий форматирование:
<div markdown="span" class="alert alert-info" role="alert">
<i class="fa fa-info-circle"></i> <b>Note:</b>
{{ include.content }}
</div>
{{ include.content }} — это параметр, который заполняется при вызове включения и указании значения для этого параметра, как в этом примере:
{% include note.html content="This is my sample note." %}
Значение content (которое равно This is my sample note) будет вставлено в параметр {{ include.content }}.
Передача параметров включениям особенно полезна, когда вы хотите скрыть сложное форматирование из вашего содержимого Markdown.
Например, предположим, что у вас есть специальный синтаксис для изображений со сложным форматированием, и вы не хотите, чтобы авторы его запоминали. В результате вы решаете упростить форматирование, используя включение с параметрами. Вот пример специального синтаксиса изображения, который вы хотите заполнить с помощью включения:
<figure>
<a href="http://jekyllrb.com">
<img src="logo.png" style="max-width: 200px;"
alt="Jekyll logo" />
</a>
<figcaption>This is the Jekyll logo</figcaption>
</figure>
Вы можете шаблонизировать это содержимое в вашем включении и сделать каждое значение доступным как параметр, как показано ниже:
<figure>
<a href="{{ include.url }}">
<img src="{{ include.file }}" style="max-width: {{ include.max-width }};"
alt="{{ include.alt }}"/>
</a>
<figcaption>{{ include.caption }}</figcaption>
</figure>
Это включение содержит 5 параметров:
urlmax-widthfilealtcaption
Вот пример, который передает все параметры этому включению (файл включения называется image.html):
{% include image.html url="http://jekyllrb.com"
max-width="200px" file="logo.png" alt="Jekyll logo"
caption="This is the Jekyll logo." %}
Результат — исходный HTML-код, показанный ранее.
Чтобы защитить ситуации, когда пользователи не предоставляют значение для параметра, вы можете использовать фильтр Liquid's default.
В целом, вы можете создавать включения, которые работают как шаблоны для различных целей — вставка аудио- или видеоклипов, оповещений, специального форматирования и т. д. Обратите внимание, что следует избегать использования слишком большого количества включений, так как это замедлит время построения вашего сайта. Например, не используйте включения каждый раз, когда вставляете изображение. (Вышеприведенный метод показывает пример использования для специальных изображений).
Передача переменных параметров включениям
Предположим, что параметр, который вы хотите передать включению, является переменной, а не строкой. Например, вы можете использовать {{ site.product_name }} для ссылки на каждый экземпляр вашего продукта, а не на фактическое жёстко закодированное имя. (В этом случае ваш файл _config.yml будет иметь ключ product_name со значением имени вашего продукта).
Строка, которую вы передаёте параметру включения, не может содержать фигурные скобки. Например, вы не можете передать параметр, который содержит это: "The latest version of {{ site.product_name }} is now available.".
Если вы хотите включить эту переменную в параметр, который вы передаёте включению, вам нужно сохранить весь параметр как переменную перед передачей её включению. Вы можете использовать теги capture для создания переменной:
{% capture download_note %}
The latest version of {{ site.product_name }} is now available.
{% endcapture %}
Затем передайте эту полученную переменную в параметр для включения. Опустите кавычки вокруг содержимого параметра, потому что это больше не строка (это переменная):
{% include note.html content=download_note %}
© 2020 Jekyll Core Team and contributors
Licensed under the MIT license.
https://jekyllrb.com/docs/includes/