Основы Grav

Конфигурация Grav

Grav
Конфигурация Grav

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

Конфигурация системы

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

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

Строго говоря, вы никогда не должны менять что-то в папке system/. Всё, что делает пользователь (создает контент, устанавливает плагины, редактирует настройки и т.п.), должно быть сделано в папке user/. Это позволяет более просто обновляться, а также хранить все ваши изменения в одном месте для бэкапа, синхронизации и т.д.

Вот как выглядит дефолтный файл system/config/system.yaml:


absolute_urls: false                        # Абсолютные или относительные URL для `base_url`
timezone: ''                                # Временная зона. Валидные значения: http://php.net/manual/ru/timezones.php
default_locale:                             # Дефолтная локаль (по умолчанию системная)
param_sep: ':'                              # Разделитель параметров, используйте ';' в Apache на Windows
wrapped_site: false                         # Обёрнута ли Grav в другую платформу (необходимо для тем/плагинов)

languages:
  supported: []                             # Список поддерживаемых языков, например: [en, fr, de]
  include_default_lang: true                # Включить префикс дефолтного языка во все URL
  translations: true                        # Включить переводы по умолчанию
  translations_fallback: true               # Откатываться на поддерживаемые языки, если активного языка не существует
  session_store_active: false               # Сохранять активный язык в сессии
  http_accept_language: false               # Пытаться установить язык, основываясь на заголовке http_accept_language в браузере
  override_locale: false                    # Переопределить дефолтную или системную локаль на специфичную для языка

home:
  alias: '/home'                            # Дефолтный путь для домашней страницы, например /

pages:
  theme: antimatter                         # Дефолтная тема (по умолчанию "antimatter")
  order:
    by: default                             # Порядок страниц по "default" (умолчанию), "alpha" (алфавиту) or "date" (дате)
    dir: asc                                # Дефолтное направление порядка "asc" (по возрастанию) или "desc" (по убыванию)
  list:
    count: 20                               # Дефолтное количество элементов на страницу
  dateformat:
    default:                                # Дефолтный формат даты, который Grav ожидает в поле `date: `
    short: 'jS M Y'                         # Формат короткой даты
    long: 'F jS \a\t g:ia'                  # Формат длинной даты
  publish_dates: true                       # Автоматически публиковать/снимать с публикации, основываясь на датах
  process:
    markdown: true                          # Обрабатывать Markdown
    twig: false                             # Обрабатывать Twig
  events:
    page: true                              # Включить события на уровне страниц
    twig: true                              # Включить события на уровне Twig
  markdown:
    extra: false                            # Включить поддежку Markdown Extra (по умолчанию GFM)
    auto_line_breaks: false                 # Включить автоматический перенос строк
    auto_url_links: false                   # Включить автоматические HTML ссылки
    escape_markup: false                    # Экранировать теги разметки в сущности
    special_chars:                          # Список специальных символов, которые следует автоматически конвертировать в сущности
      '>': 'gt'
      '<': 'lt'
  types: [txt,xml,html,htm,json,rss,atom]   # Список валидных типов страниц
  append_url_extension: ''                  # Добавлять расширение к URL страниц  (например, добавление '.html' - /path/page.html)
  expires: 604800                           # Истечение страницы в секундах (604800 секунд = 7 дней)
  last_modified: false                      # Установить заголовок last modified date, основываясь на временной метке изменения файла
  etag: false                               # Установить тег etag заголовка
  vary_accept_encoding: false               # Добавлять заголовок `Vary: Accept-Encoding` 
  redirect_default_route: false             # Автоматически перенаправлять на дефолтный роут страницы
  redirect_default_code: 301                # Дефолтный код для перенаправлений
  redirect_trailing_slash: true             # Обрабатывать автоматически или делать 301 редирект слеша / в URL
  ignore_files: [.DS_Store]                 # Файлы, которые игнорировать в страницах
  ignore_folders: [.git, .idea]             # Папки, которые игнорировать в страницах
  ignore_hidden: true                       # Игнорировать все скрытые файлы и папки
  url_taxonomy_filters: true                # Включить для коллекций страниц авто-магические фильтры таксономий, основанные на URL

cache:
  enabled: true                             # Установите в true для включения кэшировния
  check:
    method: file                            # Метод проверки обновлений страниц: file|folder|none
  driver: auto                              # Драйвер: auto|file|apc|xcache|memcache|wincache
  prefix: 'g'                               # Префикс строки кэша (предотвращает конфликты кэша)
  lifetime: 604800                          # Время жизни кэша в секундах (0 = бесконечно)
  gzip: false                               # Сжимать выходные данные страницы с помощью GZip

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

assets:                                     # Настройка менеджера ассетов (JS, CSS)
  css_pipeline: false                       # CSS конвейер - это объединение нескольких CSS ресурсов в один файл
  css_minify: true                          # Минимизировать CSS во время объединения
  css_minify_windows: false                 # Переопределение минимизации для Windows платформ. По умолчанию false из-за ThreadStackSize
  css_rewrite: true                         # Перезаписать любые относительные URL во время объединения
  js_pipeline: false                        # JS конвейер - это объединение нескольких JS ресурсов в один файл
  js_minify: true                           # Минимизировать JS во время объединения
  enable_asset_timestamp: false             # Включить метку времени для ассетов 
  collections:
    jquery: system://assets/jquery/jquery-2.1.4.min.js

errors:
  display: false                            # Отображать полную backtrace страницу ошибки
  log: true                                 # Логировать ошибки в папку /logs

debugger:
  enabled: false                            # Включить отладичк Grav
  shutdown:
    close_connection: true                  # Закрывать соединение перед вызовом onShutdown(). false при отладке

images:
  default_image_quality: 85                 # Дефолтное качество изображений при ресэмплировании (85%)
  cache_all: false                          # Кэшировать все изображения
  debug: false                              # Показывать оверлэй, который отображает глубину пикселей, например при работе с ретина дисплеями

media:
  enable_media_timestamp: false             # Включить метку времени для медиа 
  upload_limit: 0                           # Максимальный размер загрузок в байтах (0 - неограничено)
  unsupported_inline_types: []              # Массив типов медиа, которые пробовать отображать inline
  allowed_fallback_types: []                # Массив разрешенных медиа типов файлов, если к ним получен доступ через роут страницы

session:
  enabled: true                             # Включить поддержку сессии
  timeout: 1800                             # Таймаут в секундах
  name: grav-site                           # Префикс для имени куки сессии. Используйте буквы, числа, тире или нижнее подчёркивание. Не используйте точку в имени сессии

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

Конфигурация сайта

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

Дефолтный файл system/config/site.yaml, который идёт в Grav, выглядит примерно так:


title: Grav                                 # Название сайта

author:
  name: John Appleseed                      # Дефолтное имя автора
  email: 'john @ email.com'                 # Дефолтный e-mail автора

taxonomies: [category,tag]                  # Обязательный список типов таксономий

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

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

redirects:
  '/redirect-test': '/'                     # Перенаправит /redirect-test на главную
  '/old/(.*)': '/new/$1'                    # Перенаправит /old/my-page на /new/my-page

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

blog:
  route: '/blog'                            # Своё значение (доступно через system.blog.route)

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

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

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

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

Другие настройки и файлы

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

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

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

Как вариант, вы можете указать все настройки в одном файле и использовать структуры 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/system.yaml Файл настроек сайта
user/config/system.yaml Файл индивидуальных настроек для плагина myplugin

Файл конфигурации с пространством имён переопределит все параметры, которые имеют такой же путь в дефолтном файле конфигурации.

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

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