Перейти к содержанию

Настройка⚓︎

Все конфигурационные файлы Grav написаны с использованием синтаксиса YAML и имеют расширение .yaml. YAML очень интуитивно понятен, что делает его очень лёгким как для чтения, так и для записи, однако вы можете получить полное представление о доступном синтаксисе.

См. Безопасность > Конфигурация для получения краткого руководства по обеспечению безопасности и оптимизации разрабатываемого сайта.

Системная конфигурация⚓︎

Grav фокусируется на том, чтобы максимально упростить работу для пользователя, и то же самое касается конфигурации. Grav поставляется с некоторыми разумными опциями по умолчанию, которые содержатся в файле system/config/system.yaml.

Однако вы никогда не должны изменять этот файл, вместо этого любые изменения конфигурации, которые вам нужно сделать, должны храниться в файле с именем user/config/system.yaml. Любая настройка в этом файле с такой же структурой и именами переопределяет настройку, заданную в файле конфигурации системы по умолчанию.

Вообще говоря, вы НИКОГДА не должны менять что-либо в папке system/. Всё, что делает пользователь (создание контента, установка плагинов, редактирование конфигурации и т. д.), должно выполняться в папке user/. Таким образом, это упрощает обновление, а также сохраняет ваши изменения в одном месте для резервного копирования, синхронизации и т. д.

Вот переменные, заданные в файле system/config/system.yaml по умолчанию:

Основные параметры⚓︎

absolute_urls: false
timezone: ''
default_locale:
param_sep: ':'
wrapped_site: false
reverse_proxy_setup: false
force_ssl: false
force_lowercase_urls: true
custom_base_url: ''
username_regex: '^[a-z0-9_-]{3,16}$'
pwd_regex: '(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}'
intl_enabled: true
http_x_forwarded:
  protocol: true
  host: false
  port: true
  ip: true

Эти параметры конфигурации не отображаются в собственных дочерних разделах. Это общие параметры, которые влияют на работу сайта, его часовой пояс и базовый URL.

Параметр Описание
absolute_urls: Абсолютные или относительные URL для base_url
timezone: Допустимые значения можно найти здесь
default_locale: Язык по умолчанию
param_sep: Это используется для параметров Grav в URL. Не меняйте это, если вы не знаете, что делаете. Grav автоматически устанавливает значение ; для пользователей, использующих веб-сервер Apache в Windows
wrapped_site: Для тем/плагинов, чтобы знать, обернут ли Grav другой платформой. Может иметь значение true или false
reverse_proxy_setup: Работа в сценарии обратного прокси с портами веб-сервера, отличными от прокси. Может иметь значение true или false
force_ssl: Если включено, Grav принудительно использует HTTPS (ПРИМЕЧАНИЕ: не идеальное решение). Может иметь значение true или false
force_lowercase_urls: Если вы хотите поддерживать URL-адреса со смешанным регистром, установите для этого параметра значение false
custom_base_url: Возможность установить значение base_url вручную
username_regex: Имя пользователя. Только строчные буквы, цифры, тире, подчеркивания. 3-16 символов
pwd_regex: Пароль. Как минимум одно число, одна заглавная и строчная буквы, и должно быть не менее 8+ символов
intl_enabled: Специальная логика для международного расширения PHP (mod_intl)
http_x_forwarded: Параметры конфигурации для различных заголовков HTTP_X_FORWARD (Grav 1.7.0+)

Языки⚓︎

languages:
  supported: []
  default_lang:
  include_default_lang: true
  include_default_lang_file_extension: true
  pages_fallback_only: false
  translations: true
  translations_fallback: true
  session_store_active: false
  http_accept_language: false
  override_locale: false
  content_fallback: {}

В секции Languages файла устанавливаются языковые настройки сайта. Вот разбивка для области Languages файла конфигурации системы:

Параметр Описание
supported: Список поддерживаемых языков. Например: [en, fr, de, ru]
default_lang: По умолчанию это первый поддерживаемый язык. Должен быть один из поддерживаемых языков
include_default_lang: Включить префикс lang по умолчанию во все URL. Может иметь значение true или false
include_default_lang_file_extension: Если этот параметр включен, то при сохранении страницы к расширению файла будет добавлен язык по умолчанию (например, .en.md). Отключите его, чтобы сохранить язык по умолчанию, используя расширение файла .md. Может иметь значение true или false (Grav 1.7.0+)
pages_fallback_only: Единственный запасной вариант для поиска содержимого страницы на поддерживаемых языках. Может иметь значение true или false
translations: Включить переводы по умолчанию. Может иметь значение true или false
translations_fallback: Запасной вариант через поддерживаемые переводы, если активный язык не существует. Может иметь значение true или false
session_store_active: Хранить активный язык в сессии. Может иметь значение true или false
http_accept_language: Пробовать определять язык на основе заголовка http_accept_language в браузере. Может иметь значение true или false
override_locale: Переопределять стандартную или системную локаль с языковой настройкой. Может иметь значение true или false
content_fallback: По умолчанию, если контент не переведен, Grav будет отображать контент на языке по умолчанию. Используйте этот параметр, чтобы переопределить это поведение для каждого языка. (Grav 1.7.0+)

Главная страница⚓︎

home:
  alias: '/home'
  hide_in_urls: false

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

Параметр Описание
alias: Путь по умолчанию для главной страницы. Например: /home или /
hide_in_urls: Скрывать домашний маршрут в URL. Может иметь значение true или false

Страницы⚓︎

pages:
  type: regular
  theme: quark
  order:
    by: default
    dir: asc
  list:
    count: 20
  dateformat:
    default:
    short: 'jS M Y'
    long: 'F jS \a\t g:ia'
  publish_dates: true
  process:
    markdown: true
    twig: false
  twig_first: false
  never_cache_twig: false
  events:
    page: true
    twig: true
  markdown:
    extra: false
    auto_line_breaks: false
    auto_url_links: false
    escape_markup: false
    special_chars:
      '>': 'gt'
      '<': 'lt'
    valid_link_attributes:
      - rel
      - target
      - id
      - class
      - classes
  types: [html, htm, xml, txt, json, rss, atom]
  append_url_extension: ''
  expires: 604800
  cache_control:
  last_modified: false
  etag: false
  vary_accept_encoding: false
  redirect_default_route: false
  redirect_default_code: 302
  redirect_trailing_slash: true
  ignore_files: [.DS_Store]
  ignore_folders: [.git, .idea]
  ignore_hidden: true
  hide_empty_folders: false
  url_taxonomy_filters: true
  frontmatter:
    process_twig: false
    ignore_fields: ['form', 'forms']

В секции Pages файла system/config/system.yaml хранится множество основных настроек, связанных с темой. Например, здесь вы устанавливаете шаблон, используемый для визуализации сайта, порядок страниц, параметры обработки Twig и Markdown по умолчанию, и многое другое. Именно здесь принимаются большинство решений, влияющих на способ визуализации ваших страниц.

Параметр Описание
type: Экспериментальная настройка для включения Flex-страниц во фронтенде. Используйте flex для включения, или же regular для остальных случаев. Это значение по умолчанию равно regular (Grav 1.7+)
theme: Здесь вы устанавливаете тему по умолчанию. Это значение по умолчанию равно quark
order:
... by: Упорядочить страницы по default, alpha или date
... dir: Направление сортировки по умолчанию, asc или desc
list:
... count: Количество элементов по умолчанию на странице
dateformat:
... default: Формат даты по умолчанию, который Grav ожидает в поле date:
... short: Краткий формат даты. Например: 'jS M Y'
... long: Длинный формат даты. Например: 'F jS \a\t g:ia'
publish_dates: Автоматически публиковать/отменять публикацию на основе дат. Может иметь значение true или false
process:
... markdown: Включить или отключить обработку Markdown в шаблонах. Может иметь значение true или false
... twig: Включить или отключить обработку Twig в шаблонах. Может иметь значение true или false
twig_first: Обрабатывать Twig перед обработкой Markdown при совместной обработке. Может иметь значение true или false
never_cache_twig: Включение этого позволит вам добавить логику обработки, которая может динамически изменяться при каждой загрузке страницы, а не кэшировать результаты и сохранять их для каждой загрузки страницы. Это можно включить/отключить по всему сайту в system.yaml или на определенной странице. Может иметь значение true или false
events:
... page: Включить события на уровне страницы. Может иметь значение true или false
... twig: Включить события уровня Twig. Может иметь значение true или false
markdown:
... extra: Включить поддержку Markdown Extra (по умолчанию используется GitHub-подобный Markdown). Может иметь значение true или false
... auto_line_breaks: Включить автоматические разрывы строк. Может иметь значение true или false
... auto_url_links: Включить автоматические ссылки HTML. Может иметь значение true или false
... escape_markup: Экранировать теги разметки в сущности. Может иметь значение true или false
... special_chars: Список специальных символов для автоматического преобразования в сущности. Каждый символ занимает строку ниже этой переменной. Например: '>': 'gt'
... valid_link_attributes: Допустимые атрибуты для прохождения через ссылки Markdown (Grav 1.7+)
types: Список допустимых типов страниц. Например: [txt,xml,html,htm,json,rss,atom]
append_url_extension: Окончание, добавляемое к адресам страниц. (Например: .html /path/page.html)
expires: Время истечения срока действия страницы в секундах (604800 секунд = 7 дней) (значение no cache также возможно)
cache_control: Может быть пустым для отключения кэша, или иметь одно из допустимых значений cache-control
last_modified: Установить заголовок даты последнего изменения на основе временной метки изменения файла. Может иметь значение true или false
etag: Установить тег заголовка Etag. Может иметь значение true или false
vary_accept_encoding: Добавлять заголовок Vary: Accept-Encoding. Может иметь значение true или false
redirect_default_route: Автоматически перенаправлять на маршрут страницы по умолчанию. Может иметь значение true или false
redirect_default_code: Код по умолчанию, используемый для перенаправлений. Например: 302
redirect_trailing_slash: Обрабатывать автоматически или делать 302 редирект на закрывающий слеш (/) URL
ignore_files: Игнорируемые файлы. Например: [.DS_Store]
ignore_folders: Игнорируемые папки. Например: [.git, .idea]
ignore_hidden: Игнорировать все скрытые файлы и папки. Может иметь значение true или false
hide_empty_folders: Если в папке нет файла .md, она должна быть скрыта. Может иметь значение true или false
url_taxonomy_filters: Включить автоматические фильтры таксономии на основе URL для коллекций страниц. Может иметь значение true или false
frontmatter:
... process_twig: Следует ли обрабатывать секцию заголовка страницы для замены переменных Twig? Может иметь значение true или false
... ignore_fields: Поля, которые могут содержать переменные Twig и не должны обрабатываться. Например: ['form','forms']

Кэш⚓︎

cache:
  enabled: true
  check:
    method: file
  driver: auto
  prefix: 'g'
  purge_at: '0 4 * * *'
  clear_at: '0 3 * * *'
  clear_job_type: 'standard'
  clear_images_by_default: false
  cli_compatibility: false
  lifetime: 604800
  gzip: false
  allow_webserver_gzip: false
  redis:
    socket: false
    password:
    database:

В секции Cache можно настроить параметры кэширования сайта.

Параметр Описание
enabled: Установите значение true, чтобы включить кэширование. Может иметь значение true или false
check:
... method: Метод проверки наличия обновлений на страницах. Варианты: file, folder, hash и none. Подробнее
driver: Выберите драйвер кэша. Варианты: auto, file, apcu, redis, memcache и wincache
prefix: Строка префикса кэша (предотвращает конфликты кэша). Пример: g
purge_at: Планировщик: Как часто очищать старый кэш с помощью синтаксиса cron at
clear_at: Планировщик: Как часто очищать кэш с помощью синтаксиса cron at
clear_job_type: Тип для очистки при обработке запланированного задания очистки. Варианты: standard | all
clear_images_by_default: По умолчанию Grav не включает обработанные изображения при очистке кэша, это можно включить, установив значение true
cli_compatibility: Гарантирует, что используются только энергонезависимые драйверы (file, redis, memcache и т. д.)
lifetime: Время жизни кэшированных данных в секундах (0 = бесконечно). 604800 — 7 дней
gzip: Gzip отвечает за сжатие отображаемой страницы. Может иметь значение true или false
allow_webserver_gzip: Этот параметр изменит заголовок на Content-Encoding: identity, что позволит веб-серверу более надежно устанавливать gzip, хотя обычно это нарушает функцию onShutDown() вне процесса. Событие всё равно будет запущено, но оно не выйдет из процесса и может задержать страницу до тех пор, пока событие не будет завершено
redis:
... socket: Путь к файлу сокета redis
... password: Необязательный пароль
... database: Необязательный идентификатор базы данных

Twig⚓︎

twig:
  cache: true
  debug: true
  auto_reload: true
  autoescape: false
  undefined_functions: true
  undefined_filters: true
  umask_fix: false

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

Параметр Описание
cache: Включить кэширование Twig. Может иметь значение true или false
debug: Включить отладку Twig. Может иметь значение true или false
auto_reload: Обновлять кэш при изменениях. Может иметь значение true или false
autoescape: Автоматически экранировать переменные Twig. Может иметь значение true или false
undefined_functions: Разрешить неопределённые функции. Может иметь значение true или false
undefined_filters: Разрешить неопределённые фильтры. Может иметь значение true или false
umask_fix: По умолчанию Twig создает кэшированные файлы с правами 755, эта опция переключает права на 775. Может иметь значение true или false

Активы⚓︎

assets:
  css_pipeline: false
  css_pipeline_include_externals: true
  css_pipeline_before_excludes: true
  css_minify: true
  css_minify_windows: false
  css_rewrite: true
  js_pipeline: false
  js_pipeline_include_externals: true
  js_pipeline_before_excludes: true
  js_module_pipeline: false
  js_module_pipeline_include_externals: true
  js_module_pipeline_before_excludes: true
  js_minify: true
  enable_asset_timestamp: false
  enable_asset_sri: false
  collections:
    jquery: system://assets/jquery/jquery-2.x.min.js

В секции Assets можно настроить параметры, связанные с менеджером активов (JS, CSS).

Параметр Описание
css_pipeline: CSS-конвейер — это объединение нескольких ресурсов CSS в один файл. Может иметь значение true или false
css_pipeline_include_externals: Включать внешние URL-адреса в CSS-конвейер по умолчанию. Может иметь значение true или false
css_pipeline_before_excludes: Визуализировать CSS-конвейер перед любыми исключенными файлами. Может иметь значение true или false
css_minify: Минимизировать CSS во время конвейеризации. Может иметь значение true или false
css_minify_windows: Минимизировать переопределение для платформ Windows. По умолчанию false из-за ThreadStackSize. Может иметь значение true или false
css_rewrite: Переписывать любые относительные URL-адреса CSS во время конвейеризации. Может иметь значение true или false
js_pipeline: JS-конвейер — это объединение нескольких JS-ресурсов в один файл. Может иметь значение true или false
js_pipeline_include_externals: Включать внешние URL-адреса в JS-конвейер по умолчанию. Может иметь значение true или false
js_pipeline_before_excludes: Визуализировать JS-конвейер перед любыми исключенными файлами. Может иметь значение true или false
js_module_pipeline Конвейер JS-модулей - это объединение нескольких ресурсов JS-модулей в один файл. Может иметь значение true или false
js_module_pipeline_include_externals Включать внешние URL-адреса в конвейер по умолчанию. Может иметь значение true или false
js_module_pipeline_before_excludes Рендеринг конвейера перед любыми исключенными файлами. Может иметь значение true или false
js_minify: Минимизировать JS во время конвейеризации. Может иметь значение true или false
enable_asset_timestamp: Включить метки времени активов. Может иметь значение true или false
enable_asset_sri: Включить актив SRI. Может иметь значение true или false
collections: Содержит коллекции, обозначенные как подпункты. Например: jquery: system://assets/jquery/jquery-3.x.min.js. Подробности

Ошибки⚓︎

errors:
  display: 0
  log: true

В секции Errors настраивается отображение и ведение журнала ошибок Grav.

Параметр Описание
display: Определяет, как отображаются ошибки. Введите либо 1 для полного бэктрейса, либо 0 для простых ошибок, либо -1 для системных ошибок
log: Записывать ошибоки в папку /logs. Может иметь значение true или false

Лог⚓︎

log:
  handler: file
  syslog:
    facility: local6

В секции Log можно настроить альтернативные возможности ведения журнала для Grav.

Параметр Описание
handler: Обработчик журналов. В настоящее время поддерживаются: file | syslog
syslog:
... facility: Вывод средств системного журнала

Отладчик⚓︎

debugger:
  enabled: false
  provider: clockwork
  censored: false
  shutdown:
    close_connection: true

В секции Debugger можно активировать отладчик Grav. Полезный инструмент во время разработки.

Параметр Описание
enabled: Включить отладчик и следующие настройки. Может иметь значение true или false
provider: Поставщик отладчика. Может иметь значение debugbar или clockwork (Grav 1.7+)
censored: Цензура потенциально конфиденциальной информации (параметры POST, файлы cookie, файлы, конфигурация и большинство данных массивов/объектов в сообщениях журнала). Может иметь значение true или false (Grav 1.7+)
shutdown:
... close_connection: Закрывать соединение перед вызовом onShutdown(). false для отладки

Изображения⚓︎

images:
  default_image_quality: 85
  cache_all: false
  cache_perms: '0755'
  debug: false
  auto_fix_orientation: false
  seofriendly: false
  cls:
    auto_sizes: false
    aspect_ratio: false
    retina_scale: 1
  defaults:
    loading: auto

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

Параметр Описание
default_image_quality: Качество изображения по умолчанию используется при повторной дискретизации изображений. Например: 85 = 85%
cache_all: Кэширование всех изображений по умолчанию. Может иметь значение true или false
cache_perms: Значение должно находиться в кавычках! Права доступа для папки кэша. Обычно '0755' или '0775'
debug: Показывать наложение поверх изображений, указывающее глубину пикселя изображения, например, при работе с retina. Может иметь значение true или false
auto_fix_orientation: Пробовать автоматически исправить изображения, загруженные с нестандартным вращением
seofriendly: SEO-дружественные обработанные имена изображений
cls: Кумулятивный сдвиг макета. Подробнее
... auto_sizes: Автоматическое добавление высоты/ширины к изображению
... aspect_ratio: Резервное пространство с помощью стиля соотношения сторон
... retina_scale: Масштабирование для настройки авторазмеров для лучшей работы с разрешениями HiDPI
defaults: (Grav 1.7+)
... loading: Позволить выбор браузеру: auto, lazy или eager (Grav 1.7+)

Медиа⚓︎

media:
  enable_media_timestamp: false
  unsupported_inline_types: []
  allowed_fallback_types: []
  auto_metadata_exif: false

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

Параметр Описание
enable_media_timestamp: Включение временных меток мультимедиа
unsupported_inline_types: Массив поддерживаемых типов носителей для отображения встроенных. Эти типы файлов помещаются в скобки []
allowed_fallback_types: Массив разрешенных типов носителей файлов, найденных при доступе по маршруту страницы. Эти типы файлов помещаются в скобки []
auto_metadata_exif: Автоматическое создание файлов метаданных из данных Exif, где это возможно

Сессия⚓︎

session:
  enabled: true
  initialize: true
  timeout: 1800
  name: grav-site
  uniqueness: path
  secure: false
  httponly: true
  samesite: Lax
  split: true
  domain:
  path:

Эти параметры определяют свойства сеанса для вашего сайта.

Параметр Описание
enabled: Включить поддержку сессий. Может иметь значение true или false
initialize: Инициализировать сеанс из Grav (если false, плагин должен запустить сеанс)
timeout: Тайм-аут в секундах. Например: 1800
name: Префикс имени файла cookie сеанса. Используйте только буквенно-цифровые символы, тире или подчеркивания. Не используйте точки в названии сеанса. Например: grav-site
uniqueness: Должны ли сессии основываться на переменной path или же на security.salt
secure: Установить безопасный сеанс. Если true, то это означает, что связь для этого файла cookie должна осуществляться через зашифрованную передачу. Включайте эту функцию только на сайтах, работающих исключительно по протоколу HTTPS. Может иметь значение true или false
httponly: Установить сеанс только HTTP. Если true, то это означает, что файлы cookie должны использоваться только по протоколу HTTP, а модификация JavaScript не допускается. Может иметь значение true или false
samesite: Установить сессию SameSite. Возможные значения: Lax, Strict и None. См. здесь
domain: Домен сеанса, который будет использоваться в ответах. Используется только в том случае, если вы переписываете домен сайта, например, в контейнере докера.
path: Путь сеанса, который будет использоваться в ответах. Используется только в том случае, если вы переписываете подпапку сайта, например, в контейнере докера.

GPM⚓︎

gpm:
  releases: stable
  proxy_url:
  method: 'auto'
  verify_peer: true
  official_gpm_only: true

Параметры в секции GPM контролируют менеджер пакетов Grav. Например, вы можете ограничить GPM использованием официальных источников и выбрать метод, используемый GPM для извлечения пакетов. Вы также можете выбрать между стабильными и тестовыми выпусками, а также настроить URL-адрес прокси-сервера.

Параметр Описание
releases: Установите stable или testing, в зависимости от того, хотите вы обновляться до стабильных выпусков или же тестовых
proxy_url: Настроить URL-адрес прокси-сервера вручную для GPM. Например: 127.0.0.1:3128
method: Допустимые значения: 'curl', 'fopen' или 'auto'. 'auto' будет сначала пробовать fopen, и лишь затем cURL
verify_peer: В некоторых системах (в основном Windows) GPM не удается подключиться, так как SSL-сертификат не может быть проверен. Отключение этого параметра может помочь
official_gpm_only: По умолчанию GPM разрешает только URL-адреса через официальный прокси-сервер GPM для обеспечения безопасности, отключите это, чтобы разрешить другие источники

Учётные записи⚓︎

accounts:
  type: regular
  storage: file

Настройки учётных записей позволяют вам опробовать новых экспериментальных flex-пользователей. Это в основном означает, что пользователи хранятся в виде flex-объектов, обеспечивающих большую мощность и производительность.

Параметр Описание
type: Тип учётной записи: regular или flex
storage: Тип хранения Flex: file или folder

Flex⚓︎

flex:
  cache:
    index:
      enabled: true
      lifetime: 60
    object:
      enabled: true
      lifetime: 600
    render:
      enabled: true
      lifetime: 600

Параметры конфигурации кэша объектов Flex являются новыми в Grav 1.7. Это настройки по умолчанию для всех типов Flex, но их можно переопределить для каждой Flex-директории.

Параметр Описание
cache: (Grav 1.7+)
... index: (Grav 1.7+)
... ... enabled: Установите значение true, чтобы включить кэширование индекса Flex. Используется для кэширования временных меток в файлах (Grav 1.7+)
... ... lifetime: Время жизни кэшированного индекса в секундах (0 = бесконечно) (Grav 1.7+)
... object: (Grav 1.7+)
... ... enabled: Установите значение true, чтобы включить кэширование объектов Flex. Используется для кэширования данных объекта (Grav 1.7+)
... ... lifetime: Время жизни кэшированных объектов в секундах (0 = бесконечно) (Grav 1.7+)
... render: (Grav 1.7+)
... ... enabled: Установите значение true, чтобы включить кэширование рендеринга Flex. Используется для кэширования визуализированного вывода (Grav 1.7+)
... ... lifetime: Время жизни кэшированного HTML в секундах (0 = бесконечно) (Grav 1.7+)

Строгий режим⚓︎

strict_mode:
  yaml_compat: true
  twig_compat: true
  blueprint_compat: false

Строгий режим позволяет более чистую миграцию в будущие версии Grav, Перейдя на более новые версии процессоров YAML и Twig. Они могут быть несовместимы со всеми сторонними расширениями.

Параметр Описание
yaml_compat: Включает обратную совместимость YAML
twig_compat: Включает устаревшую опцию автоэкранирования Twig
blueprint_compat: Обеспечивает строгую поддержку чертежей с обратной совместимостью

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

Настройка сайта⚓︎

Наряду с файлом system.yaml, Grav также предоставляет файл конфигурации по умолчанию site.yaml, который используется для установки некоторых специфических интерфейсных настроек, таких как имя автора, адрес электронной почты автора, а также некоторые ключевые параметры таксономии. Вы можете переопределить их так же, как и system.yaml, предоставив свой собственный файл конфигурации в user/config/site.yaml. Вы также можете использовать этот файл для добавления произвольных параметров конфигурации, на которые вы можете ссылаться из вашего контента или шаблонов.

Файл system/config/site.yaml по умолчанию, который поставляется с Grav, выглядит примерно так:

title: Grav # Название сайта
default_lang: en # Язык сайта (потенциально используется шаблоном)

author:
  name: John Appleseed # Имя автора по умолчанию
  email: 'john@example.com' # Имейл автора по умолчанию

taxonomies: [category, tag] # Произвольный список типов таксономии

metadata:
  description: 'My Grav Site' # Описание сайта

summary:
  enabled: true # включить или отключить тизер страницы
  format: short # long = разделитель тизера будет проигнорирован; short = используйте первое вхождение разделителя или размер
  size: 300 # Максимальная длина тизера (в символах)
  delimiter: === # Разделитель тизера

redirects:
#  '/redirect-test': '/'                    # Redirect test goes to home page
#  '/old/(.*)': '/new/$1'                   # Would redirect /old/my-page to /new/my-page

routes:
#  '/something/else': '/blog/sample-3'      # Алиас для /blog/sample-3
#  '/new/(.*)': '/blog/$1'                  # Регулярное выражение для редиректа любого адреса вида /new/my-page на /blog/my-page

blog:
  route: '/blog' # Пользовательское значение (доступно по адресу site.blog.route)

#menu:                                      # Пример меню
#    - text: Source
#      icon: github
#      url: https://github.com/getgrav/grav
#    - icon: twitter
#      url: http://twitter.com/getgrav

Давайте разберем элементы этого примера файла:

Параметр Описание
title: Заголовок — это простая строковая переменная, на которую можно ссылаться всякий раз, когда вы хотите отобразить имя этого сайта
author:
... name: Имя автора сайта, на которое можно ссылаться всякий раз, когда вам это нужно
... email: Электронная почта по умолчанию для использования на вашем сайте
taxonomies: Произвольный список высокоуровневых типов, которые можно использовать для организации контента. Вы можете назначить контент определённым типам таксономии, например категориям или тегам. Не стесняйтесь редактировать или добавлять свои собственные
metadata: Установите метаданные по умолчанию для всех ваших страниц, см. главу содержимое заголовков страниц
summary:
... size: Переменная для переопределения количества символов по умолчанию, которое можно использовать для установки размера сводки при отображении части содержимого
routes: Это базовая карта, которая может обеспечить простые возможности псевдонима URL в Grav. При переходе по адресу /something/else вы на самом деле будете направлены на /blog/sample-3. Не стесняйтесь редактировать или добавлять свои собственные по мере необходимости. Замены с помощью регулярных выражений ((.*) - $1) теперь поддерживаются в конце алиасов. Вы должны поместить их в нижней части списка для оптимальной производительности
(custom options) Вы можете создать любой вариант, который вам нравится в этом файле, и хорошим примером является blog: маршрут: '/blog' доступен в шаблонах Twig по адресу site.blog.route

Для большинства людей наиболее важным элементом этого файла является список Таксономия. Таксономии в этом списке должны быть определены здесь, если вы хотите использовать их в своем контенте.

Безопасность⚓︎

Для повышенной безопасности есть файл system/config/security.yaml, который устанавливает некоторые разумные значения по умолчанию и используется плагином админки, когда сохраняется контент, а также в новом разделе Отчёты.

Конфигурация по умолчанию выглядит следующим образом:

xss_whitelist: [admin.super]
xss_enabled:
  on_events: true
  invalid_protocols: true
  moz_binding: true
  html_inline_styles: true
  dangerous_tags: true
xss_invalid_protocols:
  - javascript
  - livescript
  - vbscript
  - mocha
  - feed
  - data
xss_dangerous_tags:
  - applet
  - meta
  - xml
  - blink
  - link
  - style
  - script
  - embed
  - object
  - iframe
  - frame
  - frameset
  - ilayer
  - layer
  - bgsound
  - title
  - base
uploads_dangerous_extensions:
  - php
  - html
  - htm
  - js
  - exe
sanitize_svg: true

Если вы хотите внести какие-либо изменения в эти настройки, вам следует скопировать этот файл в user/config/security.yaml и внести туда правки.

Другие параметры конфигурации и файлы⚓︎

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

Вы также не ограничены рамками файлов user/config/system.yaml или user/config/site.yaml, как описано выше. Вы можете создать любой произвольный файл конфигурации .yaml в директории user/config, и он будет автоматически подхвачен Grav.

Например, если новый конфигурационный файл имеет имя user/config/data.yaml и переменная yaml в этом файле называется count:

count: 39

Доступ к переменной будет осуществляться в вашем шаблоне Twig с помощью следующего синтаксиса:

{{ config.data.count }}

Он также будет доступен через PHP из любого плагина через код:

$count_var = Grav::instance()['config']->get('data.count');

Вы также можете предоставить пользовательский чертеж, чтобы ваш пользовательский файл можно было редактировать в плагине админки. Проверьте соответствующее решение в разделе Рецепты Grav Admin.

Пространство имен переменных конфигурации⚓︎

Пути к файлам конфигурации будут использоваться в качестве пространства имен для ваших параметров конфигурации.

Кроме того, вы можете поместить все параметры в один файл и использовать структуры YAML, чтобы указать иерархию для параметров конфигурации. Это пространство имен построено из комбинации путь + имя файла + имя опции.

Например: такая опция, как author: Frank Smith в файле plugins/myplugin.yaml, может быть доступна через: plugins.myplugin.author. Однако у вас также может быть файл plugins.yaml, и в этом файле есть имя параметра с именем myplugin: author: Frank Smith, и оно всё равно будет доступно через то же пространство имен plugins.myplugin.author. Некоторые примеры файлов конфигурации могут быть структурированы:

Файл Описание
user/config/system.yaml Глобальный файл конфигурации системы
user/config/site.yaml Конфигурационный файл для конкретного сайта
user/config/plugins/myplugin.yaml Индивидуальный файл конфигурации для плагина myplugin
user/config/themes/mytheme.yaml Индивидуальный файл конфигурации для темы mytheme

Наличие файла конфигурации с пространством имен переопределит или замаскирует все параметры, имеющие одинаковый путь в файлах конфигурации по умолчанию

Конфигурация плагинов⚓︎

Большинство плагинов будут поставляться с собственным файлом конфигурации YAML. Мы рекомендуем копировать этот файл в каталог user/config/plugins/, а не редактировать параметры конфигурации непосредственно в файле, расположенном в каталоге плагина. Это гарантирует, что обновление плагина не перезапишет ваши настройки и сохранит все ваши настраиваемые параметры в одном удобном месте.

Если у вас есть плагин с именем user/plugins/myplugin, который имеет файл конфигурации с именем user/plugins/myplugin/myplugin.yaml, то вы должны скопировать этот файл в user/config/plugins/myplugin.yaml и отредактировать файл там.

Файл YAML, который существует в основном каталоге плагина, будет действовать как запасной вариант. Любые настройки, перечисленные там, а не в копии папки пользователя, будут подобраны и использованы Grav.

Конфигурация тем⚓︎

Для тем применяются те же правила, что и для плагинов. Так что если у вас есть тема с именем user/themes/mytheme, в которой есть файл конфигурации с именем user/themes/mytheme/mytheme.yaml, то вы должны скопировать этот файл в user/config/themes/mytheme.yaml и редактировать настройки там.