Spec-Zone.ru › Jekyll 4

Значения по умолчанию для служебной информации

Использование служебной информации — один из способов указать конфигурацию на страницах и записях вашего сайта. Вы можете задавать значения по умолчанию для макета, настраивать заголовок или указывать более точную дату и время для записи, добавляя их в служебную информацию страницы или записи.

Часто вам приходится повторять много параметров конфигурации. Вы устанавливаете один и тот же макет в каждом файле, добавляете одну и ту же категорию — или несколько категорий — в запись и т. д. Вы можете даже добавить пользовательские переменные, такие как имена авторов, которые могут быть одинаковыми для большинства записей в вашем блоге.

Вместо того, чтобы повторять эту конфигурацию каждый раз при создании новой записи или страницы, 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API