Значения по умолчанию для служебной информации
Использование служебной информации — один из способов указать конфигурацию на страницах и записях вашего сайта. Вы можете задавать значения по умолчанию для макета, настраивать заголовок или указывать более точную дату и время для записи, добавляя их в служебную информацию страницы или записи.
Часто вам приходится повторять много параметров конфигурации. Вы устанавливаете один и тот же макет в каждом файле, добавляете одну и ту же категорию — или несколько категорий — в запись и т. д. Вы можете даже добавить пользовательские переменные, такие как имена авторов, которые могут быть одинаковыми для большинства записей в вашем блоге.
Вместо того, чтобы повторять эту конфигурацию каждый раз при создании новой записи или страницы, Jekyll предоставляет способ задать эти значения по умолчанию в конфигурации сайта. Для этого вы можете указать значения по умолчанию для всего сайта, используя ключ defaults в файле _config.yml в корневой директории вашего проекта.
Ключ defaults содержит массив пар «область/значение», которые определяют, какие значения по умолчанию должны быть установлены для конкретного пути к файлу и, необязательно, типа файла в этом пути.
Предположим, что вы хотите добавить макет по умолчанию ко всем страницам и записям на вашем сайте. Вы добавите это в файл _config.yml.
defaults:
-
scope:
path: "" # an empty string here means all files in the project
values:
layout: "default"
Остановить и снова запустить команду `jekyll serve`.
Файл конфигурации
_config.ymlсодержит глобальные конфигурации и определения переменных, которые считываются один раз во время выполнения. Изменения, внесённые в_config.ymlво время автоматической регенерации, не загружаются до следующего выполнения.Обратите внимание, что файлы данных Data Files включаются и перезагружаются во время автоматической регенерации.
Здесь мы задаём область действия values для всех файлов, которые существуют в пути scope. Поскольку путь установлен как пустая строка, это будет применяться ко всем файлам вашего проекта. Вероятно, вы не захотите устанавливать макет для каждого файла в вашем проекте, например, для файлов CSS, поэтому вы также можете указать значение type в ключе scope.
defaults:
-
scope:
path: "" # an empty string here means all files in the project
type: "posts" # previously `post` in Jekyll 2.2.
values:
layout: "default"
Теперь это установит макет только для файлов, где тип равен posts. Доступные типы — pages, posts, drafts или любая коллекция на вашем сайте. Хотя type необязательно, вы должны указать значение для path при создании пары scope/values.
Как упоминалось ранее, вы можете установить несколько пар «область/значение» для defaults.
defaults:
-
scope:
path: ""
type: "pages"
values:
layout: "my-site"
-
scope:
path: "projects"
type: "pages" # previously `page` in Jekyll 2.2.
values:
layout: "project" # overrides previous default layout
author: "Mr. Hyde"
Благодаря этим значениям по умолчанию все страницы будут использовать макет my-site. Любые файлы html, которые существуют в папке projects/, будут использовать макет project, если он существует. Эти файлы также будут иметь переменную page.author Liquid установленную в значение Mr. Hyde.
collections:
my_collection:
output: true
defaults:
-
scope:
path: ""
type: "my_collection" # a collection in your site, in plural form
values:
layout: "default"
В этом примере layout установлено в default внутри коллекции с именем my_collection.
Шаблоны glob в значениях по умолчанию служебной информации
Также можно использовать шаблоны glob (в настоящее время ограниченные шаблонами, которые содержат *) при соответствии значениям по умолчанию. Например, можно установить определённый макет для каждой special-page.html в любой подпапке папки section.3.7.0
collections:
my_collection:
output: true
defaults:
-
scope:
path: "section/*/special-page.html"
values:
layout: "specific-layout"
Шаблоны glob и производительность
Обратите внимание, что использование шаблонов glob для путей может негативно сказаться на производительности и в настоящее время не оптимизировано, особенно в Windows. Шаблоны glob увеличат время построения пропорционально размеру соответствующей директории коллекции.
Приоритет
Jekyll применит все параметры конфигурации, указанные в разделе defaults вашего файла _config.yml. Вы можете переопределить настройки из других пар «область/значение», указав более специфичный путь для области.
Вы можете увидеть это во втором с конца примере выше. Сначала мы установили макет страницы по умолчанию в my-site. Затем, используя более специфичный путь, мы установили макет страницы по умолчанию для страниц в пути projects/ в project. Это можно сделать с любым значением, которое вы зададите в служебной информации страницы или записи.
Наконец, если вы установите значения по умолчанию в конфигурации сайта, добавив раздел defaults в свой файл _config.yml, вы можете переопределить эти настройки в файле записи или страницы. Всё, что вам нужно сделать, это указать настройки в служебной информации записи или страницы. Например:
# In _config.yml
...
defaults:
-
scope:
path: "projects"
type: "pages"
values:
layout: "project"
author: "Mr. Hyde"
category: "project"
...
# In projects/foo_project.md --- author: "John Smith" layout: "foobar" --- The post text goes here...
В результате projects/foo_project.md будет иметь значение layout вместо project и значение author вместо Mr. Hyde при построении сайта.
© 2020 Jekyll Core Team and contributors
Licensed under the MIT license.
https://jekyllrb.com/docs/configuration/front-matter-defaults/